Files
minstrel/internal/db/migrations/0090_upgrades.up.sql
T
bvandeusenandClaude Opus 5.5 c54792c51e
release / govulncheck (push) Successful in 15s
release / web (push) Successful in 1m23s
release / go (push) Successful in 1m41s
release / integration (push) Successful in 5m20s
release / android (push) Successful in 5m28s
release / Build signed APK (releases and dev) (push) Successful in 5m30s
release / Attach APK to the Release (tag releases only) (push) Skipped
release / Build + push container image (push) Successful in 27s
release / Verify release artifacts (tag releases only) (push) Skipped
feat: a held album below the quality you settle for, or holding a video rip, stays wanted for a better copy, and the import replaces the old tracks with their likes and plays carried over (M502 #5524)
- acquisition_settings.upgrade_until (default High quality lossy, Lidarr's
  cutoff, note #5527; "" is off), an "Upgrade until" row under Searching.
- The wanted worker judges held albums hourly: tier per format from size per
  second (the scanner records no bitrate), the album's worst. Below the
  cutoff it is wanted for quality; a video rip among its tracks always.
- The schedule searches upgrades weekly, after open wants; a release no
  better than the copy held is refused ("not_better").
- The import matches each file to the track it would replace (recording,
  then disc/track) and replaces it when it is a rip or the file is a better
  tier: over the same path in one rename, or filed beside it and the old
  track folded in (library.ReplaceTrack: file first, then foldTrackInto).
  Nothing better: the release is set aside.
- Collection › Upgrades (Lidarr's Cutoff Unmet); Suspect sources says when a
  clean copy was looked for instead of Lidarr's search.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 12:24:59 -04:00

30 lines
1.7 KiB
SQL

-- Upgrades (M502 #5524): a held album whose copy is below the quality the
-- operator settles for, or that holds a video rip, stays wanted for a better
-- copy. The import replaces the old tracks with the new ones.
--
-- acquisition_settings.upgrade_until the tier a held album is upgraded to;
-- '' switches quality upgrades off.
-- Lidarr's "Any" profile upgraded up to
-- High Quality Lossy (note #5527).
-- wants.upgrade why a held album is wanted again:
-- quality (below upgrade_until) or rip
-- (a track is a video rip); '' not.
-- wants.held_tier, held_quality the library copy's tier, estimated
-- from format and size per second, and
-- the same in words.
-- wants.upgrade_checked_at when the wanted worker last judged it.
-- want_candidates.verdict unchanged: a release no better than
-- the copy held is "refused".
ALTER TABLE acquisition_settings
ADD COLUMN upgrade_until text NOT NULL DEFAULT 'lossy_high';
ALTER TABLE wants
ADD COLUMN upgrade text NOT NULL DEFAULT ''
CONSTRAINT wants_upgrade_check CHECK (upgrade IN ('', 'quality', 'rip')),
ADD COLUMN held_tier text NOT NULL DEFAULT '',
ADD COLUMN held_quality text NOT NULL DEFAULT '',
ADD COLUMN upgrade_checked_at timestamptz;
CREATE INDEX wants_upgrade_idx ON wants (searched_at NULLS FIRST)
WHERE fulfilled_at IS NOT NULL AND upgrade <> '';