Fix monitor state: never downgrade on upsert, explicitly set monitored on MonitorAlbum
This commit is contained in:
@@ -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()`,
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user