aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBobby <[email protected]>2026-02-03 15:25:16 +0530
committerBobby <[email protected]>2026-02-03 15:25:16 +0530
commitf0cf231742b5c35d44408575fd857ed03884bab7 (patch)
tree509acf68a0b972628cda6ecc43bed8ef3aa988c9
parent7aa298f90fb17bc915f15a90180feb8434d596a0 (diff)
downloadmetachan-f0cf231742b5c35d44408575fd857ed03884bab7.tar.xz
metachan-f0cf231742b5c35d44408575fd857ed03884bab7.zip
Add support for manual task triggering: update AnimeSync to run after AnimeFetch and enhance task status retrieval
-rw-r--r--tasks/manager.go9
-rw-r--r--tasks/tasks.go7
-rw-r--r--types/task_manager.go9
3 files changed, 18 insertions, 7 deletions
diff --git a/tasks/manager.go b/tasks/manager.go
index ef686dc..7470542 100644
--- a/tasks/manager.go
+++ b/tasks/manager.go
@@ -277,6 +277,15 @@ func (tm *TaskManager) GetTaskStatus(taskName string) *types.TaskStatus {
if task.Interval > 0 {
next := logEntry.ExecutedAt.Add(task.Interval)
nextRun = &next
+ } else if task.TriggeredBy != "" {
+ // For manual tasks triggered by another task, use parent task's next run
+ var parentLog entities.TaskLog
+ if err := tm.Database.Where("task_name = ?", task.TriggeredBy).Order("executed_at desc").First(&parentLog).Error; err == nil {
+ if parentTask, exists := tm.Tasks[task.TriggeredBy]; exists && parentTask.Interval > 0 {
+ next := parentLog.ExecutedAt.Add(parentTask.Interval)
+ nextRun = &next
+ }
+ }
}
} else if err != gorm.ErrRecordNotFound {
logger.Log(fmt.Sprintf("Error fetching task log for %s: %v", taskName, err), logger.LogOptions{
diff --git a/tasks/tasks.go b/tasks/tasks.go
index 484a826..fb20d09 100644
--- a/tasks/tasks.go
+++ b/tasks/tasks.go
@@ -57,9 +57,10 @@ func init() {
// Register AnimeSync task (triggered automatically after AnimeFetch completes)
err = GlobalTaskManager.RegisterTask(types.Task{
- Name: "AnimeSync",
- Interval: 7 * 24 * time.Hour, // Same interval as AnimeFetch
- Execute: AniSync,
+ Name: "AnimeSync",
+ Interval: 0, // Manual-only - runs after AnimeFetch
+ Execute: AniSync,
+ TriggeredBy: "AnimeFetch",
})
if err != nil {
diff --git a/types/task_manager.go b/types/task_manager.go
index 78ef8af..1e7b157 100644
--- a/types/task_manager.go
+++ b/types/task_manager.go
@@ -5,10 +5,11 @@ import (
)
type Task struct {
- Name string
- Interval time.Duration
- Execute func() error
- LastRun time.Time
+ Name string
+ Interval time.Duration
+ Execute func() error
+ LastRun time.Time
+ TriggeredBy string // Name of parent task that triggers this task (for manual tasks)
}
type TaskStatus struct {