diff options
| author | Bobby <[email protected]> | 2026-02-24 14:02:37 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2026-02-24 14:02:37 +0530 |
| commit | de0c8e5b052342bc7aaa3e8e3795ce432208af61 (patch) | |
| tree | 4ee288d86fc17c4e28a101a35cbdf9b2c1597042 /services | |
| parent | 45e858c3062eacb2f9d51b65d5680eb211ce5482 (diff) | |
| download | metachan-de0c8e5b052342bc7aaa3e8e3795ce432208af61.tar.xz metachan-de0c8e5b052342bc7aaa3e8e3795ce432208af61.zip | |
Refactor entities and repositories: add AnimeCharacter and CharacterVoiceActor types, update character handling in anime, and enhance producer enrichment logic
Diffstat (limited to 'services')
| -rw-r--r-- | services/anime.go | 46 |
1 files changed, 28 insertions, 18 deletions
diff --git a/services/anime.go b/services/anime.go index 2bd35d1..eba303b 100644 --- a/services/anime.go +++ b/services/anime.go @@ -282,29 +282,27 @@ func applyJikanData(anime *entities.Anime, jikanAnime *types.JikanAnimeResponse, if jikanCharacters != nil { for _, jc := range jikanCharacters.Data { - character := entities.Character{ - MALID: jc.MALID, - Name: jc.Name, + char := entities.Character{ + MALID: jc.Character.MALID, + Name: jc.Character.Name, + URL: jc.Character.URL, + ImageURL: jc.Character.Images.JPG.ImageURL, Role: jc.Role, - URL: jc.URL, - ImageURL: jc.Images.JPG.ImageURL, } - if len(jc.VoiceActors) > 0 { - for _, va := range jc.VoiceActors { - if va.Language == "Japanese" { - character.VoiceActors = append(character.VoiceActors, entities.VoiceActor{ - MALID: va.MALID, - Name: va.Name, - Language: va.Language, - URL: va.URL, - Image: va.Images.JPG.ImageURL, - }) - } - } + for _, va := range jc.VoiceActors { + char.VoiceActors = append(char.VoiceActors, entities.CharacterVoiceActor{ + Language: va.Language, + VoiceActor: &entities.VoiceActor{ + MALID: va.Person.MALID, + Name: va.Person.Name, + URL: va.Person.URL, + Image: va.Person.Images.JPG.ImageURL, + }, + }) } - anime.Characters = append(anime.Characters, character) + anime.Characters = append(anime.Characters, char) } } } @@ -671,6 +669,18 @@ func saveAnime(anime *entities.Anime, skipTimeMap map[string][]entities.EpisodeS return fmt.Errorf("failed to save anime: %w", err) } + if len(anime.Episodes) > 0 { + if err := repositories.SaveAnimeEpisodes(anime.ID, anime.Episodes); err != nil { + logger.Warnf("AnimeService", "Failed to save episodes: %v", err) + } + } + + if len(anime.Characters) > 0 { + if err := repositories.SaveAnimeCharacters(anime.ID, anime.Characters); err != nil { + logger.Warnf("AnimeService", "Failed to save characters: %v", err) + } + } + for episodeID, skipTimes := range skipTimeMap { if err := repositories.SaveEpisodeSkipTimes(episodeID, skipTimes); err != nil { logger.Warnf("AnimeService", "Failed to save skip times for episode %s: %v", episodeID, err) |
