aboutsummaryrefslogtreecommitdiff
path: root/services
diff options
context:
space:
mode:
authorBobby <[email protected]>2026-02-24 14:02:37 +0530
committerBobby <[email protected]>2026-02-24 14:02:37 +0530
commitde0c8e5b052342bc7aaa3e8e3795ce432208af61 (patch)
tree4ee288d86fc17c4e28a101a35cbdf9b2c1597042 /services
parent45e858c3062eacb2f9d51b65d5680eb211ce5482 (diff)
downloadmetachan-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.go46
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)