aboutsummaryrefslogtreecommitdiff
path: root/tasks/genresync.task.go
diff options
context:
space:
mode:
Diffstat (limited to 'tasks/genresync.task.go')
-rw-r--r--tasks/genresync.task.go64
1 files changed, 9 insertions, 55 deletions
diff --git a/tasks/genresync.task.go b/tasks/genresync.task.go
index e240833..22e2712 100644
--- a/tasks/genresync.task.go
+++ b/tasks/genresync.task.go
@@ -1,82 +1,36 @@
package tasks
import (
- "fmt"
- "metachan/database"
"metachan/entities"
+ "metachan/repositories"
"metachan/utils/api/jikan"
"metachan/utils/logger"
)
-// GenreSync synchronizes genre data from MAL via Jikan API
func GenreSync() error {
- logger.Log("Starting Genre Sync from MAL", logger.LogOptions{
- Level: logger.Info,
- Prefix: "GenreSync",
- })
+ logger.Infof("GenreSync", "Starting Genre Sync from MAL")
- // Create Jikan client
- client := jikan.NewJikanClient()
-
- // Wait for rate limit
- client.WaitForRateLimit()
-
- // Fetch genres from Jikan API
- genresResponse, err := client.GetAnimeGenres()
+ genresResponse, err := jikan.GetAnimeGenres()
if err != nil {
- logger.Log(fmt.Sprintf("Failed to fetch genres from MAL: %v", err), logger.LogOptions{
- Level: logger.Error,
- Prefix: "GenreSync",
- })
+ logger.Errorf("GenreSync", "Failed to fetch genres from MAL: %v", err)
return err
}
- logger.Log(fmt.Sprintf("Fetched %d genres from MAL", len(genresResponse.Data)), logger.LogOptions{
- Level: logger.Info,
- Prefix: "GenreSync",
- })
+ logger.Infof("GenreSync", "Fetched %d genres from MAL", len(genresResponse.Data))
- // Update or create genres in database
for _, genre := range genresResponse.Data {
- // Create a genre entry with AnimeID = 0 to indicate it's a master genre
- genreEntity := entities.AnimeGenre{
- AnimeID: 0, // Master genre, not tied to specific anime
+ genreEntity := entities.Genre{
GenreID: genre.MALID,
Name: genre.Name,
URL: genre.URL,
Count: genre.Count,
}
- // Update or create
- var existing entities.AnimeGenre
- result := database.DB.Where("genre_id = ? AND anime_id = 0", genre.MALID).First(&existing)
-
- if result.Error == nil {
- // Update existing
- existing.Name = genre.Name
- existing.URL = genre.URL
- existing.Count = genre.Count
- if err := database.DB.Save(&existing).Error; err != nil {
- logger.Log(fmt.Sprintf("Failed to update genre %s: %v", genre.Name, err), logger.LogOptions{
- Level: logger.Warn,
- Prefix: "GenreSync",
- })
- }
- } else {
- // Create new
- if err := database.DB.Create(&genreEntity).Error; err != nil {
- logger.Log(fmt.Sprintf("Failed to create genre %s: %v", genre.Name, err), logger.LogOptions{
- Level: logger.Warn,
- Prefix: "GenreSync",
- })
- }
+ if err := repositories.CreateOrUpdateGenre(&genreEntity); err != nil {
+ logger.Warnf("GenreSync", "Failed to sync genre %s: %v", genre.Name, err)
}
}
- logger.Log("Genre Sync completed successfully", logger.LogOptions{
- Level: logger.Success,
- Prefix: "GenreSync",
- })
-
+ logger.Successf("GenreSync", "Genre Sync completed successfully. Synced %d genres", len(genresResponse.Data))
return nil
}