diff options
| author | Bobby <[email protected]> | 2026-02-03 14:50:13 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2026-02-03 14:50:13 +0530 |
| commit | e4d65624c49c11db7da46d05f5e4caeec79bd955 (patch) | |
| tree | 57d7e68bffa0592129d1a75af9f05896bb6f926d /database | |
| parent | ed36e0308c7cd3a6197c899cb16bfe65cc5194b4 (diff) | |
| download | metachan-e4d65624c49c11db7da46d05f5e4caeec79bd955.tar.xz metachan-e4d65624c49c11db7da46d05f5e4caeec79bd955.zip | |
Add genre-based anime retrieval with pagination and related database updates
Diffstat (limited to 'database')
| -rw-r--r-- | database/anime.go | 17 |
1 files changed, 17 insertions, 0 deletions
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 |
