diff --git a/web/prisma/migrations/20260713120000_add_contributions_and_scan_worklist/migration.sql b/web/prisma/migrations/20260713120000_add_contributions_and_scan_worklist/migration.sql new file mode 100644 index 0000000..a8fe5ad --- /dev/null +++ b/web/prisma/migrations/20260713120000_add_contributions_and_scan_worklist/migration.sql @@ -0,0 +1,33 @@ +-- CreateTable +CREATE TABLE "DiscoverySeedContribution" ( + "id" TEXT NOT NULL, + "candidateMbid" TEXT NOT NULL, + "candidateName" TEXT NOT NULL, + "seedMbid" TEXT NOT NULL, + "score" DOUBLE PRECISION NOT NULL, + "sources" TEXT[], + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "DiscoverySeedContribution_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "ScanWorkItem" ( + "id" TEXT NOT NULL, + "scanId" TEXT NOT NULL, + "artist" TEXT NOT NULL, + "album" TEXT NOT NULL, + "path" TEXT NOT NULL, + "done" BOOLEAN NOT NULL DEFAULT false, + + CONSTRAINT "ScanWorkItem_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "DiscoverySeedContribution_candidateMbid_seedMbid_key" ON "DiscoverySeedContribution"("candidateMbid", "seedMbid"); +CREATE INDEX "DiscoverySeedContribution_candidateMbid_idx" ON "DiscoverySeedContribution"("candidateMbid"); +CREATE INDEX "DiscoverySeedContribution_seedMbid_idx" ON "DiscoverySeedContribution"("seedMbid"); + +-- CreateIndex +CREATE UNIQUE INDEX "ScanWorkItem_scanId_path_key" ON "ScanWorkItem"("scanId", "path"); +CREATE INDEX "ScanWorkItem_scanId_done_artist_album_idx" ON "ScanWorkItem"("scanId", "done", "artist", "album"); diff --git a/web/prisma/schema.prisma b/web/prisma/schema.prisma index 51768a5..77763e9 100644 --- a/web/prisma/schema.prisma +++ b/web/prisma/schema.prisma @@ -155,3 +155,29 @@ model DiscoverySuggestion { createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } + +model DiscoverySeedContribution { + id String @id @default(cuid()) + candidateMbid String + candidateName String + seedMbid String + score Float + sources String[] + updatedAt DateTime @updatedAt + + @@unique([candidateMbid, seedMbid]) + @@index([candidateMbid]) + @@index([seedMbid]) +} + +model ScanWorkItem { + id String @id @default(cuid()) + scanId String + artist String + album String + path String + done Boolean @default(false) + + @@unique([scanId, path]) + @@index([scanId, done, artist, album]) +} diff --git a/worker/tests/conftest.py b/worker/tests/conftest.py index f0d22a1..68e6b98 100644 --- a/worker/tests/conftest.py +++ b/worker/tests/conftest.py @@ -28,6 +28,8 @@ def conn(): cur.execute('DELETE FROM "MonitoredRelease"') cur.execute('DELETE FROM "WatchedArtist"') cur.execute('DELETE FROM "DiscoverySuggestion"') + cur.execute('DELETE FROM "DiscoverySeedContribution"') + cur.execute('DELETE FROM "ScanWorkItem"') cur.execute('DELETE FROM "Config"') connection.commit() yield connection @@ -43,6 +45,8 @@ def conn(): cur.execute('DELETE FROM "MonitoredRelease"') cur.execute('DELETE FROM "WatchedArtist"') cur.execute('DELETE FROM "DiscoverySuggestion"') + cur.execute('DELETE FROM "DiscoverySeedContribution"') + cur.execute('DELETE FROM "ScanWorkItem"') cur.execute('DELETE FROM "Config"') connection.commit() connection.close()