From e4d65624c49c11db7da46d05f5e4caeec79bd955 Mon Sep 17 00:00:00 2001 From: Bobby <30593201+luciferreeves@users.noreply.github.com> Date: Tue, 3 Feb 2026 14:50:13 +0530 Subject: Add genre-based anime retrieval with pagination and related database updates --- database/anime.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'database') diff --git a/database/anime.go b/database/anime.go index 5c06cad..891896e 100644 --- a/database/anime.go +++ b/database/anime.go @@ -64,6 +64,23 @@ func SaveAnimeToDatabase(animeData *types.Anime) error { var existingAnime entities.Anime result := tx.Where("mal_id = ?", animeData.MALID).First(&existingAnime) if result.Error == nil { + // Delete all related records first to avoid UNIQUE constraint errors + tx.Where("anime_id = ?", existingAnime.ID).Delete(&entities.AnimeSingleEpisode{}) + tx.Where("anime_id = ?", existingAnime.ID).Delete(&entities.AnimeCharacter{}) + tx.Where("anime_id = ?", existingAnime.ID).Delete(&entities.ScheduleEpisode{}) + tx.Where("anime_id = ?", existingAnime.ID).Delete(&entities.AnimeGenre{}) + tx.Where("anime_id = ?", existingAnime.ID).Delete(&entities.AnimeProducer{}) + tx.Where("anime_id = ?", existingAnime.ID).Delete(&entities.AnimeStudio{}) + tx.Where("anime_id = ?", existingAnime.ID).Delete(&entities.AnimeLicensor{}) + tx.Where("anime_id = ?", existingAnime.ID).Delete(&entities.AnimeSeason{}) + tx.Where("anime_id = ?", existingAnime.ID).Delete(&entities.AnimeImages{}) + tx.Where("anime_id = ?", existingAnime.ID).Delete(&entities.AnimeLogos{}) + tx.Where("anime_id = ?", existingAnime.ID).Delete(&entities.AnimeCovers{}) + tx.Where("anime_id = ?", existingAnime.ID).Delete(&entities.AnimeScores{}) + tx.Where("anime_id = ?", existingAnime.ID).Delete(&entities.AiringStatus{}) + tx.Where("anime_id = ?", existingAnime.ID).Delete(&entities.AnimeBroadcast{}) + + // Now delete the anime itself if err := tx.Delete(&existingAnime).Error; err != nil { tx.Rollback() return err -- cgit v1.2.3