From 5257ed0f1b8df1313a8e9de44f3b93d4e735768d Mon Sep 17 00:00:00 2001 From: Alexander Date: Sat, 9 May 2026 11:18:52 +0200 Subject: [PATCH] Fix album persistence by passing artist DB ID directly to PersistAlbum --- internal/metadata/service.go | 19 ++++++++++++------- internal/service.go | 2 +- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/internal/metadata/service.go b/internal/metadata/service.go index 6ddc9a5..f2f757c 100644 --- a/internal/metadata/service.go +++ b/internal/metadata/service.go @@ -110,15 +110,20 @@ func (s *MetadataService) PersistArtist(ctx context.Context, album *metadataPb.A } func (s *MetadataService) PersistAlbum(ctx context.Context, album *metadataPb.Album, state database.MonitorState) { - artistID := "" - if len(album.GetArtists()) > 0 { - a, err := s.artists.GetByExternalID(ctx, album.GetArtists()[0].GetArtist().GetId()) - if err == nil { - artistID = a.ID + s.PersistAlbumForArtist(ctx, album, "", state) +} + +func (s *MetadataService) PersistAlbumForArtist(ctx context.Context, album *metadataPb.Album, artistDBID string, state database.MonitorState) { + if artistDBID == "" { + if len(album.GetArtists()) > 0 { + a, err := s.artists.GetByExternalID(ctx, album.GetArtists()[0].GetArtist().GetId()) + if err == nil { + artistDBID = a.ID + } } } - if artistID == "" { + if artistDBID == "" { log.Trace().Str("album", album.GetTitle()).Msg("skipping album persist, no artist in DB") return } @@ -135,7 +140,7 @@ func (s *MetadataService) PersistAlbum(ctx context.Context, album *metadataPb.Al err := s.albums.Create(ctx, &database.Album{ ExternalID: album.GetId(), - ArtistID: artistID, + ArtistID: artistDBID, Title: album.GetTitle(), AlbumType: album.GetAlbumType(), TotalTracks: int(album.GetTotalTracks()), diff --git a/internal/service.go b/internal/service.go index 0153e93..2f66627 100644 --- a/internal/service.go +++ b/internal/service.go @@ -126,7 +126,7 @@ func (service *MusicAgregatorService) buildAlbumsForArtist(ctx context.Context, } for _, ma := range metadataAlbums { - service.metadata.PersistAlbum(ctx, ma, database.Unmonitored) + service.metadata.PersistAlbumForArtist(ctx, ma, artist.ID, database.Unmonitored) } dbAlbums, err := service.metadata.GetAlbumsByArtistID(ctx, artist.ID)