CREATE TABLE IF NOT EXISTS "Model3DAsset" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "userId" uuid NOT NULL, "projectId" uuid NOT NULL, "taskId" varchar(128) NOT NULL, "status" varchar(32) DEFAULT 'queued' NOT NULL, "mode" varchar(32) DEFAULT 'text' NOT NULL, "prompt" text DEFAULT '' NOT NULL, "modelVersion" varchar(64) DEFAULT '' NOT NULL, "progress" integer, "modelUrl" text, "previewImageUrl" text, "error" text, "sourceTaskId" varchar(128), "exportFormat" varchar(32), "createdAt" timestamp DEFAULT now() NOT NULL, "updatedAt" timestamp DEFAULT now() NOT NULL ); --> statement-breakpoint DO $$ BEGIN ALTER TABLE "Model3DAsset" ADD CONSTRAINT "Model3DAsset_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 "Model3DAsset" ADD CONSTRAINT "Model3DAsset_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 CREATE UNIQUE INDEX IF NOT EXISTS "Model3DAsset_project_task_uidx" ON "Model3DAsset"("projectId", "taskId"); --> statement-breakpoint CREATE INDEX IF NOT EXISTS "Model3DAsset_project_updated_idx" ON "Model3DAsset"("projectId", "updatedAt");