feat(library): replace/upgrade an owned album on demand
Add Request.force (migration add_request_force): the pipeline's intake now skips the "already in library" dedupe for a forced job, so an owned album is re-downloaded. The import step still keeps the new copy only when it's higher quality, so a forced upgrade can never downgrade what's on disk. - Worker: _is_force_job → dedupe bypassed when Request.force. - POST /api/library/[id]/upgrade finds the matching MonitoredRelease and enqueues a force request (guards against stacking on an in-flight job). - Library route exposes monitoredReleaseId; the album modal shows a "Replace / upgrade" button when a release exists. Worker + web tests added (pipeline force re-acquire; upgrade route). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
-- AlterTable
|
||||
ALTER TABLE "Request" ADD COLUMN "force" BOOLEAN NOT NULL DEFAULT false;
|
||||
@@ -35,6 +35,10 @@ model Request {
|
||||
album String
|
||||
status RequestStatus @default(pending)
|
||||
createdAt DateTime @default(now())
|
||||
// Force re-acquisition: skip the "already in library" dedupe so an owned album is
|
||||
// re-downloaded on demand. The import step still keeps the copy only if it's higher
|
||||
// quality, so a forced upgrade never downgrades. Set by the Library "Replace / upgrade".
|
||||
force Boolean @default(false)
|
||||
job Job?
|
||||
libraryItem LibraryItem?
|
||||
|
||||
|
||||
Reference in New Issue
Block a user