feat: LibraryItem.requestId nullable (scanned haves need no request) + test cleanup

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Jonathan
2026-07-11 16:56:59 +02:00
parent 446d54f819
commit af67d01aa2
5 changed files with 20 additions and 2 deletions
@@ -0,0 +1,2 @@
-- AlterTable
ALTER TABLE "LibraryItem" ALTER COLUMN "requestId" DROP NOT NULL;
+2 -2
View File
@@ -72,8 +72,8 @@ model Candidate {
model LibraryItem {
id String @id @default(cuid())
request Request @relation(fields: [requestId], references: [id], onDelete: Cascade)
requestId String @unique
request Request? @relation(fields: [requestId], references: [id], onDelete: Cascade)
requestId String? @unique
artist String
album String
path String
+1
View File
@@ -12,6 +12,7 @@ beforeEach(async () => {
// Job cascades from Request; Request.monitoredReleaseId is SetNull. Delete children first.
await prisma.job.deleteMany();
await prisma.request.deleteMany();
await prisma.libraryItem.deleteMany();
await prisma.monitoredRelease.deleteMany();
await prisma.watchedArtist.deleteMany();
await prisma.config.deleteMany();
+2
View File
@@ -24,6 +24,7 @@ def conn():
with connection.cursor() as cur:
cur.execute('DELETE FROM "Job"')
cur.execute('DELETE FROM "Request"')
cur.execute('DELETE FROM "LibraryItem"')
cur.execute('DELETE FROM "MonitoredRelease"')
cur.execute('DELETE FROM "WatchedArtist"')
cur.execute('DELETE FROM "Config"')
@@ -33,6 +34,7 @@ def conn():
with connection.cursor() as cur:
cur.execute('DELETE FROM "Job"')
cur.execute('DELETE FROM "Request"')
cur.execute('DELETE FROM "LibraryItem"')
cur.execute('DELETE FROM "MonitoredRelease"')
cur.execute('DELETE FROM "WatchedArtist"')
cur.execute('DELETE FROM "Config"')
@@ -0,0 +1,13 @@
def test_library_item_can_have_null_request(conn):
with conn.cursor() as cur:
cur.execute(
'INSERT INTO "LibraryItem" (id, "requestId", artist, album, path, source, format, '
'"qualityClass", "importedAt") '
"VALUES (gen_random_uuid()::text, NULL, 'A', 'B', '/m/A/B', 'scan', 'FLAC', 2, now()) "
"RETURNING id"
)
lib_id = cur.fetchone()[0]
conn.commit()
with conn.cursor() as cur:
cur.execute('SELECT "requestId" FROM "LibraryItem" WHERE id = %s', (lib_id,))
assert cur.fetchone()[0] is None