aboutsummaryrefslogtreecommitdiff
path: root/tasks/tasks.go
blob: 9df67fc4454ba8ee7983fbd27d718fb79e88eb6e (plain)
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)
	}
}