fix: a slot emptied of another song's file drops that file's recording MBID, so missing-pair folding cannot fold it into the copy kept (M498)
release / govulncheck (push) Successful in 24s
release / web (push) Successful in 1m21s
release / go (push) Successful in 1m35s
release / integration (push) Failing after 5m1s
release / android (push) Successful in 5m2s
release / Build signed APK (releases and dev) (push) Successful in 5m11s
release / Attach APK to the Release (tag releases only) (push) Skipped
release / Build + push container image (push) Skipped
release / Verify release artifacts (tag releases only) (push) Skipped
release / govulncheck (push) Successful in 24s
release / web (push) Successful in 1m21s
release / go (push) Successful in 1m35s
release / integration (push) Failing after 5m1s
release / android (push) Successful in 5m2s
release / Build signed APK (releases and dev) (push) Successful in 5m11s
release / Attach APK to the Release (tag releases only) (push) Skipped
release / Build + push container image (push) Skipped
release / Verify release artifacts (tag releases only) (push) Skipped
On 2026-10-20 twelve of the 24 slots the resolver emptied were folded by MBID into the kept copy, so their albums were never wanted back. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -56,6 +56,21 @@ func (q *Queries) ClearStaleSuspectSourceTracks(ctx context.Context, pattern str
|
||||
return result.RowsAffected(), nil
|
||||
}
|
||||
|
||||
const clearTrackMbids = `-- name: ClearTrackMbids :exec
|
||||
UPDATE tracks
|
||||
SET mbid = NULL
|
||||
WHERE id = ANY($1::uuid[])
|
||||
`
|
||||
|
||||
// Forgets the recording MBID of rows whose file was another song's (M498's
|
||||
// wrong-slot removal). The MBID came from that file, so it names the song kept
|
||||
// elsewhere on the album, and missing-pair folding would fold the emptied slot
|
||||
// into it: twelve slots went that way on 2026-10-20 and were never wanted back.
|
||||
func (q *Queries) ClearTrackMbids(ctx context.Context, ids []pgtype.UUID) error {
|
||||
_, err := q.db.Exec(ctx, clearTrackMbids, ids)
|
||||
return err
|
||||
}
|
||||
|
||||
const clearTracksMissing = `-- name: ClearTracksMissing :execrows
|
||||
UPDATE tracks
|
||||
SET missing_since = NULL
|
||||
|
||||
@@ -216,6 +216,15 @@ UPDATE tracks
|
||||
WHERE id = ANY(sqlc.arg(ids)::uuid[])
|
||||
AND missing_since IS NULL;
|
||||
|
||||
-- name: ClearTrackMbids :exec
|
||||
-- Forgets the recording MBID of rows whose file was another song's (M498's
|
||||
-- wrong-slot removal). The MBID came from that file, so it names the song kept
|
||||
-- elsewhere on the album, and missing-pair folding would fold the emptied slot
|
||||
-- into it: twelve slots went that way on 2026-10-20 and were never wanted back.
|
||||
UPDATE tracks
|
||||
SET mbid = NULL
|
||||
WHERE id = ANY(sqlc.arg(ids)::uuid[]);
|
||||
|
||||
-- name: ClearTracksMissing :execrows
|
||||
-- Clears the mark on rows whose file is back. Runs independently of the mtime
|
||||
-- skip check, so a file that reappears unchanged is un-marked even though the
|
||||
|
||||
Reference in New Issue
Block a user