diff options
| author | Bobby <[email protected]> | 2026-02-03 15:17:34 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2026-02-03 15:17:34 +0530 |
| commit | 7aa298f90fb17bc915f15a90180feb8434d596a0 (patch) | |
| tree | 084e93e769591cb47eb453ca2adf3e78646d4e73 /tasks | |
| parent | fb233706694e73774751f2481bf7b5df57b98fd9 (diff) | |
| download | metachan-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.go | 24 | ||||
| -rw-r--r-- | tasks/tasks.go | 8 |
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, }) |
