feat: monitoring data model (WatchedArtist, MonitoredRelease, Request link)
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
-- CreateEnum
|
||||
CREATE TYPE "MonitoredReleaseState" AS ENUM ('wanted', 'grabbed', 'fulfilled');
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "Request" ADD COLUMN "monitoredReleaseId" TEXT;
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "WatchedArtist" (
|
||||
"id" TEXT NOT NULL,
|
||||
"mbid" TEXT NOT NULL,
|
||||
"name" TEXT NOT NULL,
|
||||
"autoMonitorFuture" BOOLEAN NOT NULL DEFAULT false,
|
||||
"monitorFrom" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"lastPolledAt" TIMESTAMP(3),
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "WatchedArtist_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "MonitoredRelease" (
|
||||
"id" TEXT NOT NULL,
|
||||
"watchedArtistId" TEXT,
|
||||
"artistMbid" TEXT NOT NULL,
|
||||
"artistName" TEXT NOT NULL,
|
||||
"rgMbid" TEXT NOT NULL,
|
||||
"album" TEXT NOT NULL,
|
||||
"primaryType" TEXT,
|
||||
"secondaryTypes" TEXT[],
|
||||
"firstReleaseDate" TEXT,
|
||||
"monitored" BOOLEAN NOT NULL DEFAULT false,
|
||||
"state" "MonitoredReleaseState" NOT NULL DEFAULT 'wanted',
|
||||
"currentQualityClass" INTEGER,
|
||||
"firstGrabbedAt" TIMESTAMP(3),
|
||||
"lastSearchedAt" TIMESTAMP(3),
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "MonitoredRelease_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "WatchedArtist_mbid_key" ON "WatchedArtist"("mbid");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "MonitoredRelease_rgMbid_key" ON "MonitoredRelease"("rgMbid");
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Request" ADD CONSTRAINT "Request_monitoredReleaseId_fkey" FOREIGN KEY ("monitoredReleaseId") REFERENCES "MonitoredRelease"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "MonitoredRelease" ADD CONSTRAINT "MonitoredRelease_watchedArtistId_fkey" FOREIGN KEY ("watchedArtistId") REFERENCES "WatchedArtist"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
@@ -23,6 +23,12 @@ enum JobState {
|
||||
needs_attention
|
||||
}
|
||||
|
||||
enum MonitoredReleaseState {
|
||||
wanted
|
||||
grabbed
|
||||
fulfilled
|
||||
}
|
||||
|
||||
model Request {
|
||||
id String @id @default(cuid())
|
||||
artist String
|
||||
@@ -31,6 +37,9 @@ model Request {
|
||||
createdAt DateTime @default(now())
|
||||
job Job?
|
||||
libraryItem LibraryItem?
|
||||
|
||||
monitoredReleaseId String?
|
||||
monitoredRelease MonitoredRelease? @relation(fields: [monitoredReleaseId], references: [id], onDelete: SetNull)
|
||||
}
|
||||
|
||||
model Job {
|
||||
@@ -82,3 +91,34 @@ model Config {
|
||||
secret Boolean @default(false)
|
||||
updatedAt DateTime @updatedAt
|
||||
}
|
||||
|
||||
model WatchedArtist {
|
||||
id String @id @default(cuid())
|
||||
mbid String @unique
|
||||
name String
|
||||
autoMonitorFuture Boolean @default(false)
|
||||
monitorFrom DateTime @default(now())
|
||||
lastPolledAt DateTime?
|
||||
createdAt DateTime @default(now())
|
||||
releases MonitoredRelease[]
|
||||
}
|
||||
|
||||
model MonitoredRelease {
|
||||
id String @id @default(cuid())
|
||||
watchedArtist WatchedArtist? @relation(fields: [watchedArtistId], references: [id], onDelete: Cascade)
|
||||
watchedArtistId String?
|
||||
artistMbid String
|
||||
artistName String
|
||||
rgMbid String @unique
|
||||
album String
|
||||
primaryType String?
|
||||
secondaryTypes String[]
|
||||
firstReleaseDate String?
|
||||
monitored Boolean @default(false)
|
||||
state MonitoredReleaseState @default(wanted)
|
||||
currentQualityClass Int?
|
||||
firstGrabbedAt DateTime?
|
||||
lastSearchedAt DateTime?
|
||||
createdAt DateTime @default(now())
|
||||
requests Request[]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user