ai-chatbot/lib/db/migrations/0050_add_context_memory_tables.sql
Your Name 5f849bf0b7
Some checks failed
Lint / build (20) (push) Has been cancelled
Playwright Tests / test (push) Has been cancelled
feat: sync canvas resize flow and latest local updates
2026-03-06 17:00:35 +08:00

102 lines
4.7 KiB
SQL

CREATE TABLE IF NOT EXISTS "ConversationWorkingState" (
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
"userId" uuid NOT NULL,
"chatId" uuid NOT NULL,
"projectId" uuid,
"currentIntent" varchar(64),
"currentSubIntent" varchar(64),
"currentFocusAssetIds" jsonb DEFAULT '[]'::jsonb NOT NULL,
"currentFocusImageUrls" jsonb DEFAULT '[]'::jsonb NOT NULL,
"selectedAssetIds" jsonb DEFAULT '[]'::jsonb NOT NULL,
"selectedImageUrls" jsonb DEFAULT '[]'::jsonb NOT NULL,
"lastUploadedAssetIds" jsonb DEFAULT '[]'::jsonb NOT NULL,
"lastUploadedImageUrls" jsonb DEFAULT '[]'::jsonb NOT NULL,
"lastGeneratedAssetIds" jsonb DEFAULT '[]'::jsonb NOT NULL,
"lastGeneratedImageUrls" jsonb DEFAULT '[]'::jsonb NOT NULL,
"lastReferencedAssetIds" jsonb DEFAULT '[]'::jsonb NOT NULL,
"lastReferencedImageUrls" jsonb DEFAULT '[]'::jsonb NOT NULL,
"lastResolvedTargetAssetIds" jsonb DEFAULT '[]'::jsonb NOT NULL,
"lastResolvedTargetImageUrls" jsonb DEFAULT '[]'::jsonb NOT NULL,
"activeCanvasNodeIds" jsonb DEFAULT '[]'::jsonb NOT NULL,
"lastCanvasSnapshot" jsonb,
"lastTurnSummary" jsonb,
"lastMessageId" uuid,
"turnCount" integer DEFAULT 0 NOT NULL,
"createdAt" timestamp DEFAULT now() NOT NULL,
"updatedAt" timestamp DEFAULT now() NOT NULL,
CONSTRAINT "ConversationWorkingState_chatId_unique" UNIQUE("chatId")
);
--> statement-breakpoint
CREATE TABLE IF NOT EXISTS "MessageTargetResolution" (
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
"userId" uuid NOT NULL,
"chatId" uuid NOT NULL,
"messageId" uuid,
"projectId" uuid,
"rawText" text NOT NULL,
"uploadedAssetIds" jsonb DEFAULT '[]'::jsonb NOT NULL,
"uploadedImageUrls" jsonb DEFAULT '[]'::jsonb NOT NULL,
"selectedAssetIds" jsonb DEFAULT '[]'::jsonb NOT NULL,
"selectedImageUrls" jsonb DEFAULT '[]'::jsonb NOT NULL,
"candidateAssetIds" jsonb DEFAULT '[]'::jsonb NOT NULL,
"candidateImageUrls" jsonb DEFAULT '[]'::jsonb NOT NULL,
"resolvedAssetIds" jsonb DEFAULT '[]'::jsonb NOT NULL,
"resolvedImageUrls" jsonb DEFAULT '[]'::jsonb NOT NULL,
"resolutionMode" varchar(64) NOT NULL,
"confidence" integer DEFAULT 0 NOT NULL,
"needsClarification" boolean DEFAULT false NOT NULL,
"reasoning" jsonb,
"createdAt" timestamp DEFAULT now() NOT NULL
);
--> statement-breakpoint
DO $$ BEGIN
ALTER TABLE "ConversationWorkingState" ADD CONSTRAINT "ConversationWorkingState_userId_User_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."User"("id") ON DELETE cascade ON UPDATE no action;
EXCEPTION
WHEN duplicate_object THEN null;
END $$;
--> statement-breakpoint
DO $$ BEGIN
ALTER TABLE "ConversationWorkingState" ADD CONSTRAINT "ConversationWorkingState_chatId_Chat_id_fk" FOREIGN KEY ("chatId") REFERENCES "public"."Chat"("id") ON DELETE cascade ON UPDATE no action;
EXCEPTION
WHEN duplicate_object THEN null;
END $$;
--> statement-breakpoint
DO $$ BEGIN
ALTER TABLE "ConversationWorkingState" ADD CONSTRAINT "ConversationWorkingState_projectId_CanvasProject_id_fk" FOREIGN KEY ("projectId") REFERENCES "public"."CanvasProject"("id") ON DELETE set null ON UPDATE no action;
EXCEPTION
WHEN duplicate_object THEN null;
END $$;
--> statement-breakpoint
DO $$ BEGIN
ALTER TABLE "MessageTargetResolution" ADD CONSTRAINT "MessageTargetResolution_userId_User_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."User"("id") ON DELETE cascade ON UPDATE no action;
EXCEPTION
WHEN duplicate_object THEN null;
END $$;
--> statement-breakpoint
DO $$ BEGIN
ALTER TABLE "MessageTargetResolution" ADD CONSTRAINT "MessageTargetResolution_chatId_Chat_id_fk" FOREIGN KEY ("chatId") REFERENCES "public"."Chat"("id") ON DELETE cascade ON UPDATE no action;
EXCEPTION
WHEN duplicate_object THEN null;
END $$;
--> statement-breakpoint
DO $$ BEGIN
ALTER TABLE "MessageTargetResolution" ADD CONSTRAINT "MessageTargetResolution_messageId_Message_v2_id_fk" FOREIGN KEY ("messageId") REFERENCES "public"."Message_v2"("id") ON DELETE set null ON UPDATE no action;
EXCEPTION
WHEN duplicate_object THEN null;
END $$;
--> statement-breakpoint
DO $$ BEGIN
ALTER TABLE "MessageTargetResolution" ADD CONSTRAINT "MessageTargetResolution_projectId_CanvasProject_id_fk" FOREIGN KEY ("projectId") REFERENCES "public"."CanvasProject"("id") ON DELETE set null ON UPDATE no action;
EXCEPTION
WHEN duplicate_object THEN null;
END $$;
--> statement-breakpoint
CREATE INDEX IF NOT EXISTS "ConversationWorkingState_user_updated_idx"
ON "ConversationWorkingState"("userId", "updatedAt");
--> statement-breakpoint
CREATE INDEX IF NOT EXISTS "MessageTargetResolution_chat_created_idx"
ON "MessageTargetResolution"("chatId", "createdAt");
--> statement-breakpoint
CREATE INDEX IF NOT EXISTS "MessageTargetResolution_message_idx"
ON "MessageTargetResolution"("messageId");