118 lines
5.8 KiB
SQL
118 lines
5.8 KiB
SQL
-- V52 Blueprint Engine persistence foundation
|
|
ALTER TYPE "EntityType" ADD VALUE IF NOT EXISTS 'blueprint_graph';
|
|
ALTER TYPE "EntityType" ADD VALUE IF NOT EXISTS 'blueprint_node';
|
|
ALTER TYPE "EntityType" ADD VALUE IF NOT EXISTS 'blueprint_node_run';
|
|
|
|
CREATE TABLE IF NOT EXISTS "BlueprintGraph" (
|
|
"id" TEXT NOT NULL,
|
|
"projectId" TEXT NOT NULL,
|
|
"slug" TEXT,
|
|
"readableId" TEXT,
|
|
"archetypeId" TEXT NOT NULL,
|
|
"archetypeLabel" TEXT NOT NULL,
|
|
"depth" TEXT NOT NULL,
|
|
"status" TEXT NOT NULL DEFAULT 'planned',
|
|
"documentRoot" TEXT NOT NULL DEFAULT 'docs/',
|
|
"intakeSummary" TEXT NOT NULL,
|
|
"assumptionsJson" JSONB NOT NULL,
|
|
"exportManifestJson" JSONB NOT NULL,
|
|
"recommendedNextActionsJson" JSONB NOT NULL,
|
|
"metadataJson" JSONB,
|
|
"createdBy" TEXT NOT NULL DEFAULT 'api',
|
|
"updatedBy" TEXT,
|
|
"sourceType" TEXT NOT NULL DEFAULT 'blueprint_engine',
|
|
"archivedAt" TIMESTAMP(3),
|
|
"deletedAt" TIMESTAMP(3),
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
CONSTRAINT "BlueprintGraph_pkey" PRIMARY KEY ("id"),
|
|
CONSTRAINT "BlueprintGraph_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "BlueprintNode" (
|
|
"id" TEXT NOT NULL,
|
|
"projectId" TEXT NOT NULL,
|
|
"graphId" TEXT NOT NULL,
|
|
"templateId" TEXT NOT NULL,
|
|
"kind" TEXT NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"cluster" TEXT NOT NULL,
|
|
"status" TEXT NOT NULL DEFAULT 'pending',
|
|
"generationOrder" INTEGER NOT NULL,
|
|
"requiredDepth" TEXT NOT NULL,
|
|
"dependsOnJson" JSONB NOT NULL,
|
|
"dependencyTitlesJson" JSONB NOT NULL,
|
|
"blockedByJson" JSONB NOT NULL,
|
|
"outputPath" TEXT NOT NULL,
|
|
"purpose" TEXT NOT NULL,
|
|
"requiredContextJson" JSONB NOT NULL,
|
|
"qualityChecksJson" JSONB NOT NULL,
|
|
"producesJson" JSONB NOT NULL,
|
|
"promptPreview" TEXT NOT NULL,
|
|
"contextSelectionJson" JSONB NOT NULL,
|
|
"documentationItemId" TEXT,
|
|
"reviewItemId" TEXT,
|
|
"latestRunId" TEXT,
|
|
"staleReason" TEXT,
|
|
"metadataJson" JSONB,
|
|
"createdBy" TEXT NOT NULL DEFAULT 'api',
|
|
"updatedBy" TEXT,
|
|
"sourceType" TEXT NOT NULL DEFAULT 'blueprint_engine',
|
|
"archivedAt" TIMESTAMP(3),
|
|
"deletedAt" TIMESTAMP(3),
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
CONSTRAINT "BlueprintNode_pkey" PRIMARY KEY ("id"),
|
|
CONSTRAINT "BlueprintNode_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
CONSTRAINT "BlueprintNode_graphId_fkey" FOREIGN KEY ("graphId") REFERENCES "BlueprintGraph"("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "BlueprintNodeRun" (
|
|
"id" TEXT NOT NULL,
|
|
"projectId" TEXT NOT NULL,
|
|
"graphId" TEXT NOT NULL,
|
|
"nodeId" TEXT NOT NULL,
|
|
"status" TEXT NOT NULL DEFAULT 'needs_review',
|
|
"generatedBy" TEXT NOT NULL DEFAULT 'deterministic',
|
|
"inputSnapshotJson" JSONB NOT NULL,
|
|
"prompt" TEXT NOT NULL,
|
|
"draftMarkdown" TEXT NOT NULL,
|
|
"qualityReportJson" JSONB NOT NULL,
|
|
"documentationItemId" TEXT,
|
|
"reviewItemId" TEXT,
|
|
"metadataJson" JSONB,
|
|
"createdBy" TEXT NOT NULL DEFAULT 'api',
|
|
"updatedBy" TEXT,
|
|
"sourceType" TEXT NOT NULL DEFAULT 'blueprint_engine',
|
|
"archivedAt" TIMESTAMP(3),
|
|
"deletedAt" TIMESTAMP(3),
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
CONSTRAINT "BlueprintNodeRun_pkey" PRIMARY KEY ("id"),
|
|
CONSTRAINT "BlueprintNodeRun_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
CONSTRAINT "BlueprintNodeRun_graphId_fkey" FOREIGN KEY ("graphId") REFERENCES "BlueprintGraph"("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
CONSTRAINT "BlueprintNodeRun_nodeId_fkey" FOREIGN KEY ("nodeId") REFERENCES "BlueprintNode"("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "BlueprintGraph_projectId_slug_key" ON "BlueprintGraph"("projectId", "slug");
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "BlueprintGraph_projectId_readableId_key" ON "BlueprintGraph"("projectId", "readableId");
|
|
CREATE INDEX IF NOT EXISTS "BlueprintGraph_projectId_idx" ON "BlueprintGraph"("projectId");
|
|
CREATE INDEX IF NOT EXISTS "BlueprintGraph_projectId_archetypeId_idx" ON "BlueprintGraph"("projectId", "archetypeId");
|
|
CREATE INDEX IF NOT EXISTS "BlueprintGraph_projectId_status_idx" ON "BlueprintGraph"("projectId", "status");
|
|
CREATE INDEX IF NOT EXISTS "BlueprintGraph_projectId_deletedAt_idx" ON "BlueprintGraph"("projectId", "deletedAt");
|
|
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "BlueprintNode_graphId_templateId_key" ON "BlueprintNode"("graphId", "templateId");
|
|
CREATE INDEX IF NOT EXISTS "BlueprintNode_projectId_idx" ON "BlueprintNode"("projectId");
|
|
CREATE INDEX IF NOT EXISTS "BlueprintNode_projectId_graphId_idx" ON "BlueprintNode"("projectId", "graphId");
|
|
CREATE INDEX IF NOT EXISTS "BlueprintNode_projectId_status_idx" ON "BlueprintNode"("projectId", "status");
|
|
CREATE INDEX IF NOT EXISTS "BlueprintNode_projectId_cluster_idx" ON "BlueprintNode"("projectId", "cluster");
|
|
CREATE INDEX IF NOT EXISTS "BlueprintNode_projectId_outputPath_idx" ON "BlueprintNode"("projectId", "outputPath");
|
|
CREATE INDEX IF NOT EXISTS "BlueprintNode_projectId_deletedAt_idx" ON "BlueprintNode"("projectId", "deletedAt");
|
|
|
|
CREATE INDEX IF NOT EXISTS "BlueprintNodeRun_projectId_idx" ON "BlueprintNodeRun"("projectId");
|
|
CREATE INDEX IF NOT EXISTS "BlueprintNodeRun_projectId_graphId_idx" ON "BlueprintNodeRun"("projectId", "graphId");
|
|
CREATE INDEX IF NOT EXISTS "BlueprintNodeRun_projectId_nodeId_idx" ON "BlueprintNodeRun"("projectId", "nodeId");
|
|
CREATE INDEX IF NOT EXISTS "BlueprintNodeRun_projectId_status_idx" ON "BlueprintNodeRun"("projectId", "status");
|
|
CREATE INDEX IF NOT EXISTS "BlueprintNodeRun_projectId_createdAt_idx" ON "BlueprintNodeRun"("projectId", "createdAt");
|
|
CREATE INDEX IF NOT EXISTS "BlueprintNodeRun_projectId_deletedAt_idx" ON "BlueprintNodeRun"("projectId", "deletedAt");
|