39 lines
1.9 KiB
SQL
39 lines
1.9 KiB
SQL
-- V72: persistent initiatives created from Brainstorm CPU roadmap outcomes.
|
|
ALTER TYPE "EntityType" ADD VALUE IF NOT EXISTS 'initiative';
|
|
|
|
CREATE TABLE IF NOT EXISTS "Initiative" (
|
|
"id" TEXT NOT NULL,
|
|
"projectId" TEXT NOT NULL,
|
|
"slug" TEXT,
|
|
"readableId" TEXT,
|
|
"title" TEXT NOT NULL,
|
|
"intent" TEXT NOT NULL,
|
|
"status" TEXT NOT NULL DEFAULT 'proposed',
|
|
"priority" TEXT NOT NULL DEFAULT 'normal',
|
|
"featureIdsJson" JSONB NOT NULL DEFAULT '[]',
|
|
"approvalState" "ApprovalState" NOT NULL DEFAULT 'pending',
|
|
"confidence" INTEGER NOT NULL DEFAULT 0,
|
|
"sourceBrainstormId" TEXT,
|
|
"reviewItemId" TEXT,
|
|
"metadataJson" JSONB,
|
|
"provenanceJson" JSONB,
|
|
"createdBy" TEXT NOT NULL DEFAULT 'api',
|
|
"updatedBy" TEXT,
|
|
"sourceType" TEXT NOT NULL DEFAULT 'brainstorm_cpu',
|
|
"archivedAt" TIMESTAMP(3),
|
|
"deletedAt" TIMESTAMP(3),
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
CONSTRAINT "Initiative_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "Initiative_projectId_slug_key" ON "Initiative"("projectId", "slug");
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "Initiative_projectId_readableId_key" ON "Initiative"("projectId", "readableId");
|
|
CREATE INDEX IF NOT EXISTS "Initiative_projectId_idx" ON "Initiative"("projectId");
|
|
CREATE INDEX IF NOT EXISTS "Initiative_projectId_status_idx" ON "Initiative"("projectId", "status");
|
|
CREATE INDEX IF NOT EXISTS "Initiative_projectId_approvalState_idx" ON "Initiative"("projectId", "approvalState");
|
|
CREATE INDEX IF NOT EXISTS "Initiative_projectId_sourceBrainstormId_idx" ON "Initiative"("projectId", "sourceBrainstormId");
|
|
CREATE INDEX IF NOT EXISTS "Initiative_projectId_deletedAt_idx" ON "Initiative"("projectId", "deletedAt");
|
|
|
|
ALTER TABLE "Initiative" ADD CONSTRAINT "Initiative_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|