41 lines
1.9 KiB
SQL
41 lines
1.9 KiB
SQL
-- P5 adds persistent capture items. ReviewQueueItem already exists in the initial schema.
|
|
CREATE TABLE "CaptureItem" (
|
|
"id" TEXT NOT NULL,
|
|
"projectId" TEXT NOT NULL,
|
|
"slug" TEXT,
|
|
"readableId" TEXT,
|
|
"type" TEXT NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"content" TEXT NOT NULL,
|
|
"source" TEXT NOT NULL,
|
|
"status" TEXT NOT NULL,
|
|
"classificationType" TEXT,
|
|
"confidence" INTEGER,
|
|
"evidenceStrength" "EvidenceStrength",
|
|
"suggestedAction" TEXT,
|
|
"linkedReviewItemId" TEXT,
|
|
"metadataJson" JSONB,
|
|
"provenanceJson" JSONB,
|
|
"createdBy" TEXT NOT NULL DEFAULT 'system',
|
|
"updatedBy" TEXT,
|
|
"sourceType" TEXT NOT NULL DEFAULT 'fixture_seed',
|
|
"archivedAt" TIMESTAMP(3),
|
|
"deletedAt" TIMESTAMP(3),
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "CaptureItem_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
CREATE UNIQUE INDEX "CaptureItem_projectId_slug_key" ON "CaptureItem"("projectId", "slug");
|
|
CREATE UNIQUE INDEX "CaptureItem_projectId_readableId_key" ON "CaptureItem"("projectId", "readableId");
|
|
CREATE INDEX "CaptureItem_projectId_idx" ON "CaptureItem"("projectId");
|
|
CREATE INDEX "CaptureItem_projectId_status_idx" ON "CaptureItem"("projectId", "status");
|
|
CREATE INDEX "CaptureItem_projectId_type_idx" ON "CaptureItem"("projectId", "type");
|
|
CREATE INDEX "CaptureItem_projectId_classificationType_idx" ON "CaptureItem"("projectId", "classificationType");
|
|
CREATE INDEX "CaptureItem_projectId_linkedReviewItemId_idx" ON "CaptureItem"("projectId", "linkedReviewItemId");
|
|
CREATE INDEX "CaptureItem_projectId_createdAt_idx" ON "CaptureItem"("projectId", "createdAt");
|
|
CREATE INDEX "CaptureItem_projectId_deletedAt_idx" ON "CaptureItem"("projectId", "deletedAt");
|
|
|
|
ALTER TABLE "CaptureItem" ADD CONSTRAINT "CaptureItem_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|