CREATE TABLE IF NOT EXISTS "CanvasNode" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "projectId" uuid NOT NULL, "type" varchar(32) NOT NULL, "position" jsonb, "size" jsonb, "data" jsonb, "connections" jsonb DEFAULT '[]'::jsonb, "parentId" uuid, "createdAt" timestamp DEFAULT now() NOT NULL, "updatedAt" timestamp DEFAULT now() NOT NULL ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "CanvasProject" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "userId" uuid NOT NULL, "title" varchar(256) DEFAULT '未命名画布' NOT NULL, "description" text, "thumbnail" text, "canvasData" jsonb, "createdAt" timestamp DEFAULT now() NOT NULL, "updatedAt" timestamp DEFAULT now() NOT NULL ); --> statement-breakpoint CREATE TABLE IF NOT EXISTS "GeneratedImage" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "userId" uuid NOT NULL, "chatId" uuid, "messageId" uuid, "thumbnailUrl" text NOT NULL, "originalUrl" text NOT NULL, "imageSize" varchar(10) DEFAULT '2K', "prompt" text, "modelId" varchar(128), "isFeatured" boolean DEFAULT false NOT NULL, "featuredAt" timestamp, "featuredBy" uuid, "createdAt" timestamp DEFAULT now() NOT NULL ); --> statement-breakpoint ALTER TABLE "AiModel" ADD COLUMN IF NOT EXISTS "capabilities" jsonb;--> statement-breakpoint ALTER TABLE "AiModel" ADD COLUMN IF NOT EXISTS "defaultParams" jsonb;--> statement-breakpoint ALTER TABLE "AiModel" ADD COLUMN IF NOT EXISTS "is_sub_model" boolean DEFAULT false NOT NULL;--> statement-breakpoint ALTER TABLE "AiModel" ADD COLUMN IF NOT EXISTS "parent_model_id" uuid;--> statement-breakpoint ALTER TABLE "AiModel" ADD COLUMN IF NOT EXISTS "fallbackModelId1" varchar(128);--> statement-breakpoint ALTER TABLE "AiModel" ADD COLUMN IF NOT EXISTS "fallbackModelId2" varchar(128);--> statement-breakpoint ALTER TABLE "AiModel" ADD COLUMN IF NOT EXISTS "imageGenConfig" jsonb;--> statement-breakpoint ALTER TABLE "AuthSettings" ADD COLUMN IF NOT EXISTS "dingTalkOrganizations" jsonb;--> statement-breakpoint ALTER TABLE "Message_v2" ADD COLUMN IF NOT EXISTS "video_storage_status" varchar(20) DEFAULT 'temporary';--> statement-breakpoint ALTER TABLE "Message_v2" ADD COLUMN IF NOT EXISTS "temporary_video_url" text;--> statement-breakpoint ALTER TABLE "Message_v2" ADD COLUMN IF NOT EXISTS "permanent_video_url" text;--> statement-breakpoint ALTER TABLE "Message_v2" ADD COLUMN IF NOT EXISTS "archived_at" timestamp;--> statement-breakpoint ALTER TABLE "Message_v2" ADD COLUMN IF NOT EXISTS "video_metadata" jsonb;--> statement-breakpoint ALTER TABLE "SiteSettings" ADD COLUMN IF NOT EXISTS "showAutoModel" boolean DEFAULT true NOT NULL;--> statement-breakpoint ALTER TABLE "SiteSettings" ADD COLUMN IF NOT EXISTS "defaultTheme" varchar(16) DEFAULT 'system' NOT NULL;--> statement-breakpoint ALTER TABLE "SiteSettings" ADD COLUMN IF NOT EXISTS "usageTimeEnabled" boolean DEFAULT false NOT NULL;--> statement-breakpoint ALTER TABLE "SiteSettings" ADD COLUMN IF NOT EXISTS "usageTimeStart" varchar(5) DEFAULT '08:00';--> statement-breakpoint ALTER TABLE "SiteSettings" ADD COLUMN IF NOT EXISTS "usageTimeEnd" varchar(5) DEFAULT '20:00';--> statement-breakpoint ALTER TABLE "SiteSettings" ADD COLUMN IF NOT EXISTS "usageTimeMessage" text DEFAULT '由壹点累了也是需要休息的';--> statement-breakpoint ALTER TABLE "User" ADD COLUMN IF NOT EXISTS "name" varchar(100);--> statement-breakpoint ALTER TABLE "User" ADD COLUMN IF NOT EXISTS "department" varchar(256);--> statement-breakpoint ALTER TABLE "User" ADD COLUMN IF NOT EXISTS "dingtalkUserId" varchar(128);--> statement-breakpoint ALTER TABLE "User" ADD COLUMN IF NOT EXISTS "monthlyImageLimit" integer;--> statement-breakpoint DO $$ BEGIN ALTER TABLE "CanvasNode" ADD CONSTRAINT "CanvasNode_projectId_CanvasProject_id_fk" FOREIGN KEY ("projectId") REFERENCES "public"."CanvasProject"("id") ON DELETE cascade ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "CanvasProject" ADD CONSTRAINT "CanvasProject_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 "GeneratedImage" ADD CONSTRAINT "GeneratedImage_userId_User_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."User"("id") ON DELETE no action ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "GeneratedImage" ADD CONSTRAINT "GeneratedImage_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 "GeneratedImage" ADD CONSTRAINT "GeneratedImage_featuredBy_User_id_fk" FOREIGN KEY ("featuredBy") REFERENCES "public"."User"("id") ON DELETE no action ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$;