diff --git a/internal/database/album_repository.go b/internal/database/album_repository.go index 9051516..be14df3 100644 --- a/internal/database/album_repository.go +++ b/internal/database/album_repository.go @@ -48,6 +48,7 @@ func (r *AlbumRepository) Create(ctx context.Context, a *Album) error { cover_url = EXCLUDED.cover_url, monitor_state = CASE WHEN albums.monitor_state = 'excluded' THEN albums.monitor_state + WHEN albums.monitor_state = 'monitored' THEN albums.monitor_state ELSE EXCLUDED.monitor_state END, updated_at = NOW()`, diff --git a/internal/database/artist_repository.go b/internal/database/artist_repository.go index c40cb32..c0ea3b4 100644 --- a/internal/database/artist_repository.go +++ b/internal/database/artist_repository.go @@ -41,6 +41,7 @@ func (r *ArtistRepository) Create(ctx context.Context, a *Artist) error { image_url = EXCLUDED.image_url, monitor_state = CASE WHEN artists.monitor_state = 'excluded' THEN artists.monitor_state + WHEN artists.monitor_state = 'monitored' THEN artists.monitor_state ELSE EXCLUDED.monitor_state END, updated_at = NOW() diff --git a/internal/metadata/service.go b/internal/metadata/service.go index f2f757c..a2c2b2e 100644 --- a/internal/metadata/service.go +++ b/internal/metadata/service.go @@ -84,6 +84,10 @@ func (s *MetadataService) GetTracksByAlbumID(ctx context.Context, albumID string return s.tracks.GetByAlbumID(ctx, albumID) } +func (s *MetadataService) SetAlbumMonitorState(ctx context.Context, id string, state database.MonitorState) error { + return s.albums.SetMonitorState(ctx, id, state) +} + func (s *MetadataService) PersistArtist(ctx context.Context, album *metadataPb.Album, state database.MonitorState) { if len(album.GetArtists()) == 0 { return diff --git a/internal/service.go b/internal/service.go index f200b8e..6eac160 100644 --- a/internal/service.go +++ b/internal/service.go @@ -299,6 +299,9 @@ func (service *MusicAgregatorService) MonitorAlbum(ctx context.Context, req *pb. dbAlbum, _ := service.metadata.GetAlbumByExternalID(ctx, album.GetId()) if dbAlbum != nil { + service.metadata.SetAlbumMonitorState(ctx, dbAlbum.ID, database.Monitored) + dbAlbum.MonitorState = database.Monitored + qualityStr := normalizeQuality(req.GetQuality(), 0, 0) owned, err := service.downloads.HasAlbumInQuality(ctx, dbAlbum.ID, req.GetQuality().String(), qualityStr) if err == nil && owned {