aboutsummaryrefslogtreecommitdiff
path: root/tasks/tasks.go
diff options
context:
space:
mode:
authorBobby <[email protected]>2026-02-06 17:45:55 +0530
committerBobby <[email protected]>2026-02-06 17:45:55 +0530
commit2da45b9fbf74d365951e37a4152f30e76caaeb98 (patch)
tree8fc9b5f02d37194c136e7f757f1e37c21825094c /tasks/tasks.go
parent8cb229a3bc07387067ca76a34c05b44ff7a3039a (diff)
downloadmetachan-2da45b9fbf74d365951e37a4152f30e76caaeb98.tar.xz
metachan-2da45b9fbf74d365951e37a4152f30e76caaeb98.zip
Refactor task management and producer synchronization
- Updated TaskManager to utilize repositories for database operations, improving separation of concerns. - Enhanced logging functionality by replacing logger.Log with logger.Infof, logger.Warnf, and logger.Errorf for better readability and consistency. - Simplified ProducerSync function by removing unnecessary pagination logic and directly fetching producer data. - Introduced helper functions for calculating progress and managing task statuses. - Added new service for fetching and saving anime data, integrating multiple data sources (Jikan, Anilist, MALsync, TMDB, TVDB, Aniskip). - Created new types for task management and improved overall code organization. - Removed deprecated database calls and replaced them with repository methods for better maintainability.
Diffstat (limited to 'tasks/tasks.go')
-rw-r--r--tasks/tasks.go38
1 files changed, 10 insertions, 28 deletions
diff --git a/tasks/tasks.go b/tasks/tasks.go
index 31d017d..8b19a19 100644
--- a/tasks/tasks.go
+++ b/tasks/tasks.go
@@ -1,9 +1,7 @@
package tasks
import (
- "fmt"
"metachan/config"
- "metachan/database"
"metachan/types"
"metachan/utils/logger"
"sync"
@@ -14,11 +12,10 @@ 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{},
- Database: database.DB,
+ Tasks: make(map[string]types.Task),
+ Tickers: make(map[string]*time.Ticker),
+ Done: make(map[string]chan bool),
+ Mutex: sync.Mutex{},
}
// Register ProducerSync task (every 7 days) - runs first to populate unified producer table
@@ -29,10 +26,7 @@ func init() {
})
if err != nil {
- logger.Log(fmt.Sprintf("Failed to register ProducerSync task: %v", err), logger.LogOptions{
- Level: logger.Error,
- Prefix: "TaskManager",
- })
+ logger.Errorf("TaskManager", "Failed to register ProducerSync task: %v", err)
}
// Register GenreSync task (every 7 days)
@@ -43,10 +37,7 @@ func init() {
})
if err != nil {
- logger.Log(fmt.Sprintf("Failed to register GenreSync task: %v", err), logger.LogOptions{
- Level: logger.Error,
- Prefix: "TaskManager",
- })
+ logger.Errorf("TaskManager", "Failed to register GenreSync task: %v", err)
}
// Register AniFetch task (weekly) - fetches anime mappings from Fribb list
@@ -59,14 +50,11 @@ func init() {
})
if err != nil {
- logger.Log(fmt.Sprintf("Failed to register AnimeFetch task: %v", err), logger.LogOptions{
- Level: logger.Error,
- Prefix: "TaskManager",
- })
+ logger.Errorf("TaskManager", "Failed to register AnimeFetch task: %v", err)
}
// Register AnimeSync task (runs after AnimeFetch completes) - only if enabled in config
- if config.Config.AniSync {
+ if config.Sync.AniSync {
err = GlobalTaskManager.RegisterTask(types.Task{
Name: "AnimeSync",
Interval: 0, // Manual-only - waits for AnimeFetch dependency
@@ -75,10 +63,7 @@ func init() {
})
if err != nil {
- logger.Log(fmt.Sprintf("Failed to register AnimeSync task: %v", err), logger.LogOptions{
- Level: logger.Error,
- Prefix: "TaskManager",
- })
+ logger.Errorf("TaskManager", "Failed to register AnimeSync task: %v", err)
}
}
@@ -90,9 +75,6 @@ func init() {
})
if err != nil {
- logger.Log(fmt.Sprintf("Failed to register AnimeUpdate task: %v", err), logger.LogOptions{
- Level: logger.Error,
- Prefix: "TaskManager",
- })
+ logger.Errorf("TaskManager", "Failed to register AnimeUpdate task: %v", err)
}
}