1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
package tasks
import (
"metachan/config"
"metachan/types"
"metachan/utils/logger"
"sync"
"time"
)
var GlobalTaskManager *TaskManager
func init() {
GlobalTaskManager = &TaskManager{
Tasks: make(map[string]types.Task),
Tickers: make(map[string]*time.Ticker),
Done: make(map[string]chan bool),
Mutex: sync.Mutex{},
}
err := GlobalTaskManager.RegisterTask(types.Task{
Name: "ProducerSync",
Interval: 7 * 24 * time.Hour,
Execute: ProducerSync,
OnResume: ResumeProducerEnrichment,
})
if err != nil {
logger.Errorf("TaskManager", "Failed to register ProducerSync task: %v", err)
}
err = GlobalTaskManager.RegisterTask(types.Task{
Name: "GenreSync",
Interval: 7 * 24 * time.Hour,
Execute: GenreSync,
})
if err != nil {
logger.Errorf("TaskManager", "Failed to register GenreSync task: %v", err)
}
err = GlobalTaskManager.RegisterTask(types.Task{
Name: "AnimeFetch",
Interval: 7 * 24 * time.Hour,
Dependencies: []string{"ProducerSync", "GenreSync"},
Execute: AniFetch,
})
if err != nil {
logger.Errorf("TaskManager", "Failed to register AnimeFetch task: %v", err)
}
if config.Sync.AniSync {
err = GlobalTaskManager.RegisterTask(types.Task{
Name: "AnimeSync",
Interval: 0,
Execute: AniSync,
OnResume: ResumeAnimeSync,
Dependencies: []string{"AnimeFetch"},
})
if err != nil {
logger.Errorf("TaskManager", "Failed to register AnimeSync task: %v", err)
}
err = GlobalTaskManager.RegisterTask(types.Task{
Name: "CharacterSync",
Interval: 0,
Execute: CharacterSync,
OnResume: ResumeCharacterEnrichment,
Dependencies: []string{"AnimeSync"},
})
if err != nil {
logger.Errorf("TaskManager", "Failed to register CharacterSync task: %v", err)
}
err = GlobalTaskManager.RegisterTask(types.Task{
Name: "PersonSync",
Interval: 0,
Execute: PersonSync,
OnResume: ResumePersonEnrichment,
Dependencies: []string{"CharacterSync"},
})
if err != nil {
logger.Errorf("TaskManager", "Failed to register PersonSync task: %v", err)
}
}
err = GlobalTaskManager.RegisterTask(types.Task{
Name: "AnimeUpdate",
Interval: 15 * time.Minute,
Execute: AnimeUpdate,
})
if err != nil {
logger.Errorf("TaskManager", "Failed to register AnimeUpdate task: %v", err)
}
}
|