feat(discovery): DiscoverySuggestion schema + WatchedArtist.lastDiscoveredAt

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Jonathan
2026-07-11 23:58:45 +02:00
parent 0d2b7f0ae5
commit 0ddc9db611
5 changed files with 129 additions and 5 deletions
@@ -0,0 +1,33 @@
-- CreateEnum
CREATE TYPE "DiscoveryKind" AS ENUM ('artist', 'album');
-- CreateEnum
CREATE TYPE "SuggestionStatus" AS ENUM ('pending', 'followed', 'wanted', 'dismissed');
-- AlterTable
ALTER TABLE "WatchedArtist" ADD COLUMN "lastDiscoveredAt" TIMESTAMP(3);
-- CreateTable
CREATE TABLE "DiscoverySuggestion" (
"id" TEXT NOT NULL,
"kind" "DiscoveryKind" NOT NULL,
"artistMbid" TEXT NOT NULL,
"artistName" TEXT NOT NULL,
"rgMbid" TEXT,
"album" TEXT,
"primaryType" TEXT,
"secondaryTypes" TEXT[],
"firstReleaseDate" TEXT,
"score" DOUBLE PRECISION NOT NULL,
"seedCount" INTEGER NOT NULL,
"sources" TEXT[],
"status" "SuggestionStatus" NOT NULL DEFAULT 'pending',
"dedupeKey" TEXT NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "DiscoverySuggestion_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX "DiscoverySuggestion_dedupeKey_key" ON "DiscoverySuggestion"("dedupeKey");
+32
View File
@@ -100,6 +100,7 @@ model WatchedArtist {
showAllTypes Boolean @default(false)
monitorFrom DateTime @default(now())
lastPolledAt DateTime?
lastDiscoveredAt DateTime?
createdAt DateTime @default(now())
releases MonitoredRelease[]
}
@@ -123,3 +124,34 @@ model MonitoredRelease {
createdAt DateTime @default(now())
requests Request[]
}
enum DiscoveryKind {
artist
album
}
enum SuggestionStatus {
pending
followed
wanted
dismissed
}
model DiscoverySuggestion {
id String @id @default(cuid())
kind DiscoveryKind
artistMbid String
artistName String
rgMbid String?
album String?
primaryType String?
secondaryTypes String[]
firstReleaseDate String?
score Float
seedCount Int
sources String[]
status SuggestionStatus @default(pending)
dedupeKey String @unique
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}