Fix monitor state: never downgrade on upsert, explicitly set monitored on MonitorAlbum

This commit is contained in:
Alexander
2026-05-09 20:26:38 +02:00
parent 3ce6e23421
commit 6f31698006
4 changed files with 9 additions and 0 deletions
+1
View File
@@ -48,6 +48,7 @@ func (r *AlbumRepository) Create(ctx context.Context, a *Album) error {
cover_url = EXCLUDED.cover_url, cover_url = EXCLUDED.cover_url,
monitor_state = CASE monitor_state = CASE
WHEN albums.monitor_state = 'excluded' THEN albums.monitor_state WHEN albums.monitor_state = 'excluded' THEN albums.monitor_state
WHEN albums.monitor_state = 'monitored' THEN albums.monitor_state
ELSE EXCLUDED.monitor_state ELSE EXCLUDED.monitor_state
END, END,
updated_at = NOW()`, updated_at = NOW()`,
+1
View File
@@ -41,6 +41,7 @@ func (r *ArtistRepository) Create(ctx context.Context, a *Artist) error {
image_url = EXCLUDED.image_url, image_url = EXCLUDED.image_url,
monitor_state = CASE monitor_state = CASE
WHEN artists.monitor_state = 'excluded' THEN artists.monitor_state WHEN artists.monitor_state = 'excluded' THEN artists.monitor_state
WHEN artists.monitor_state = 'monitored' THEN artists.monitor_state
ELSE EXCLUDED.monitor_state ELSE EXCLUDED.monitor_state
END, END,
updated_at = NOW() updated_at = NOW()
+4
View File
@@ -84,6 +84,10 @@ func (s *MetadataService) GetTracksByAlbumID(ctx context.Context, albumID string
return s.tracks.GetByAlbumID(ctx, albumID) 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) { func (s *MetadataService) PersistArtist(ctx context.Context, album *metadataPb.Album, state database.MonitorState) {
if len(album.GetArtists()) == 0 { if len(album.GetArtists()) == 0 {
return return
+3
View File
@@ -299,6 +299,9 @@ func (service *MusicAgregatorService) MonitorAlbum(ctx context.Context, req *pb.
dbAlbum, _ := service.metadata.GetAlbumByExternalID(ctx, album.GetId()) dbAlbum, _ := service.metadata.GetAlbumByExternalID(ctx, album.GetId())
if dbAlbum != nil { if dbAlbum != nil {
service.metadata.SetAlbumMonitorState(ctx, dbAlbum.ID, database.Monitored)
dbAlbum.MonitorState = database.Monitored
qualityStr := normalizeQuality(req.GetQuality(), 0, 0) qualityStr := normalizeQuality(req.GetQuality(), 0, 0)
owned, err := service.downloads.HasAlbumInQuality(ctx, dbAlbum.ID, req.GetQuality().String(), qualityStr) owned, err := service.downloads.HasAlbumInQuality(ctx, dbAlbum.ID, req.GetQuality().String(), qualityStr)
if err == nil && owned { if err == nil && owned {