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 { model LibraryItem {
id String @id @default(cuid()) id String @id @default(cuid())
request Request @relation(fields: [requestId], references: [id], onDelete: Cascade) request Request? @relation(fields: [requestId], references: [id], onDelete: Cascade)
requestId String @unique requestId String? @unique
artist String artist String
album String album String
path String path String
+1
View File
@@ -12,6 +12,7 @@ beforeEach(async () => {
// Job cascades from Request; Request.monitoredReleaseId is SetNull. Delete children first. // Job cascades from Request; Request.monitoredReleaseId is SetNull. Delete children first.
await prisma.job.deleteMany(); await prisma.job.deleteMany();
await prisma.request.deleteMany(); await prisma.request.deleteMany();
await prisma.libraryItem.deleteMany();
await prisma.monitoredRelease.deleteMany(); await prisma.monitoredRelease.deleteMany();
await prisma.watchedArtist.deleteMany(); await prisma.watchedArtist.deleteMany();
await prisma.config.deleteMany(); await prisma.config.deleteMany();
+2
View File
@@ -24,6 +24,7 @@ def conn():
with connection.cursor() as cur: with connection.cursor() as cur:
cur.execute('DELETE FROM "Job"') cur.execute('DELETE FROM "Job"')
cur.execute('DELETE FROM "Request"') cur.execute('DELETE FROM "Request"')
cur.execute('DELETE FROM "LibraryItem"')
cur.execute('DELETE FROM "MonitoredRelease"') cur.execute('DELETE FROM "MonitoredRelease"')
cur.execute('DELETE FROM "WatchedArtist"') cur.execute('DELETE FROM "WatchedArtist"')
cur.execute('DELETE FROM "Config"') cur.execute('DELETE FROM "Config"')
@@ -33,6 +34,7 @@ def conn():
with connection.cursor() as cur: with connection.cursor() as cur:
cur.execute('DELETE FROM "Job"') cur.execute('DELETE FROM "Job"')
cur.execute('DELETE FROM "Request"') cur.execute('DELETE FROM "Request"')
cur.execute('DELETE FROM "LibraryItem"')
cur.execute('DELETE FROM "MonitoredRelease"') cur.execute('DELETE FROM "MonitoredRelease"')
cur.execute('DELETE FROM "WatchedArtist"') cur.execute('DELETE FROM "WatchedArtist"')
cur.execute('DELETE FROM "Config"') 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