aboutsummaryrefslogtreecommitdiff
path: root/tasks
diff options
context:
space:
mode:
authorBobby <[email protected]>2026-02-03 15:17:34 +0530
committerBobby <[email protected]>2026-02-03 15:17:34 +0530
commit7aa298f90fb17bc915f15a90180feb8434d596a0 (patch)
tree084e93e769591cb47eb453ca2adf3e78646d4e73 /tasks
parentfb233706694e73774751f2481bf7b5df57b98fd9 (diff)
downloadmetachan-7aa298f90fb17bc915f15a90180feb8434d596a0.tar.xz
metachan-7aa298f90fb17bc915f15a90180feb8434d596a0.zip
Enhance episode ID generation and task management: include MAL ID and episode number for uniqueness, and update AnimeSync task to run weekly with last run tracking
Diffstat (limited to 'tasks')
-rw-r--r--tasks/manager.go24
-rw-r--r--tasks/tasks.go8
2 files changed, 31 insertions, 1 deletions
diff --git a/tasks/manager.go b/tasks/manager.go
index a420148..ef686dc 100644
--- a/tasks/manager.go
+++ b/tasks/manager.go
@@ -152,6 +152,15 @@ func (tm *TaskManager) StartTask(taskName string) {
}
}
+ // Skip ticker creation for manual-only tasks (interval = 0)
+ if task.Interval == 0 {
+ logger.Log(fmt.Sprintf("Task %s is manual-only (no scheduled interval)", taskName), logger.LogOptions{
+ Level: logger.Debug,
+ Prefix: "TaskManager",
+ })
+ return
+ }
+
// Create ticker for subsequent executions
ticker := time.NewTicker(task.Interval)
tm.Mutex.Lock()
@@ -204,6 +213,21 @@ func (tm *TaskManager) StopTask(taskName string) {
}
}
+// UpdateTaskLastRun manually updates a task's LastRun time
+func (tm *TaskManager) UpdateTaskLastRun(taskName string, lastRun time.Time) {
+ tm.Mutex.Lock()
+ defer tm.Mutex.Unlock()
+
+ if task, exists := tm.Tasks[taskName]; exists {
+ task.LastRun = lastRun
+ tm.Tasks[taskName] = task
+ logger.Log(fmt.Sprintf("Updated task %s LastRun: %v", taskName, lastRun), logger.LogOptions{
+ Level: logger.Debug,
+ Prefix: "TaskManager",
+ })
+ }
+}
+
func (tm *TaskManager) StartAllTasks() {
tm.Mutex.Lock()
var taskNames []string
diff --git a/tasks/tasks.go b/tasks/tasks.go
index ecf8d80..484a826 100644
--- a/tasks/tasks.go
+++ b/tasks/tasks.go
@@ -36,6 +36,12 @@ func init() {
Level: logger.Error,
Prefix: "TaskManager",
})
+ GlobalTaskManager.logTaskExecution("AnimeSync", "error", err.Error())
+ } else {
+ // Update AnimeSync's LastRun after successful completion
+ animeSyncEndTime := time.Now()
+ GlobalTaskManager.UpdateTaskLastRun("AnimeSync", animeSyncEndTime)
+ GlobalTaskManager.logTaskExecution("AnimeSync", "success", "Task executed successfully")
}
}()
return nil
@@ -52,7 +58,7 @@ func init() {
// Register AnimeSync task (triggered automatically after AnimeFetch completes)
err = GlobalTaskManager.RegisterTask(types.Task{
Name: "AnimeSync",
- Interval: 0, // No scheduled interval - runs after AnimeFetch
+ Interval: 7 * 24 * time.Hour, // Same interval as AnimeFetch
Execute: AniSync,
})