feat(server/m7-379): heal existing artist+album mbid on rescan
This commit is contained in:
@@ -201,6 +201,19 @@ func (s *Scanner) scanFile(ctx context.Context, q *dbq.Queries, path string, sta
|
||||
func (s *Scanner) resolveArtist(ctx context.Context, q *dbq.Queries, name, mbid string) (dbq.Artist, error) {
|
||||
existing, err := q.GetArtistByName(ctx, name)
|
||||
if err == nil {
|
||||
// Heal: backfill mbid on a previously-imported row if we have one now.
|
||||
if mbid != "" && (existing.Mbid == nil || *existing.Mbid == "") {
|
||||
m := mbid
|
||||
if uerr := q.SetArtistMbidIfNull(ctx, dbq.SetArtistMbidIfNullParams{
|
||||
ID: existing.ID,
|
||||
Mbid: &m,
|
||||
}); uerr != nil {
|
||||
s.logger.Warn("library scan: heal artist mbid failed",
|
||||
"artist_id", existing.ID, "err", uerr)
|
||||
} else {
|
||||
existing.Mbid = &m
|
||||
}
|
||||
}
|
||||
return existing, nil
|
||||
}
|
||||
if !errors.Is(err, pgx.ErrNoRows) {
|
||||
@@ -220,6 +233,19 @@ func (s *Scanner) resolveArtist(ctx context.Context, q *dbq.Queries, name, mbid
|
||||
func (s *Scanner) resolveAlbum(ctx context.Context, q *dbq.Queries, artistID pgtype.UUID, title string, year int, mbid string) (dbq.Album, error) {
|
||||
existing, err := q.GetAlbumByArtistAndTitle(ctx, dbq.GetAlbumByArtistAndTitleParams{ArtistID: artistID, Title: title})
|
||||
if err == nil {
|
||||
// Heal: backfill mbid on a previously-imported row if we have one now.
|
||||
if mbid != "" && (existing.Mbid == nil || *existing.Mbid == "") {
|
||||
m := mbid
|
||||
if uerr := q.SetAlbumMbidIfNull(ctx, dbq.SetAlbumMbidIfNullParams{
|
||||
ID: existing.ID,
|
||||
Mbid: &m,
|
||||
}); uerr != nil {
|
||||
s.logger.Warn("library scan: heal album mbid failed",
|
||||
"album_id", existing.ID, "err", uerr)
|
||||
} else {
|
||||
existing.Mbid = &m
|
||||
}
|
||||
}
|
||||
return existing, nil
|
||||
}
|
||||
if !errors.Is(err, pgx.ErrNoRows) {
|
||||
|
||||
Reference in New Issue
Block a user