DO $$ BEGIN ALTER TABLE "agent" DROP CONSTRAINT "agent_user_id_user_id_fk"; EXCEPTION WHEN undefined_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "chat_message" DROP CONSTRAINT "chat_message_thread_id_chat_thread_id_fk"; EXCEPTION WHEN undefined_object THEN null; END $$; --> statement-breakpoint DO $$ BEGIN ALTER TABLE "chat_thread" DROP CONSTRAINT "chat_thread_user_id_user_id_fk"; EXCEPTION WHEN undefined_object THEN null; END $$; --> statement-breakpoint ALTER TABLE "account" ALTER COLUMN "created_at" SET DEFAULT CURRENT_TIMESTAMP;--> statement-breakpoint ALTER TABLE "account" ALTER COLUMN "updated_at" SET DEFAULT CURRENT_TIMESTAMP;--> statement-breakpoint ALTER TABLE "session" ALTER COLUMN "created_at" SET DEFAULT CURRENT_TIMESTAMP;--> statement-breakpoint ALTER TABLE "session" ALTER COLUMN "updated_at" SET DEFAULT CURRENT_TIMESTAMP;--> statement-breakpoint ALTER TABLE "mcp_server" ADD COLUMN IF NOT EXISTS "user_id" uuid;--> statement-breakpoint ALTER TABLE "mcp_server" ADD COLUMN IF NOT EXISTS "visibility" varchar DEFAULT 'private' NOT NULL;--> statement-breakpoint ALTER TABLE "session" ADD COLUMN IF NOT EXISTS "impersonated_by" text;--> statement-breakpoint ALTER TABLE "user" ADD COLUMN IF NOT EXISTS "banned" boolean;--> statement-breakpoint ALTER TABLE "user" ADD COLUMN IF NOT EXISTS "ban_reason" text;--> statement-breakpoint ALTER TABLE "user" ADD COLUMN IF NOT EXISTS "ban_expires" timestamp;--> statement-breakpoint ALTER TABLE "user" ADD COLUMN IF NOT EXISTS "role" text DEFAULT 'editor' NOT NULL;--> statement-breakpoint -- Set user_id for existing MCP servers to first admin user (or first user if no admin) UPDATE "mcp_server" SET "user_id" = COALESCE( (SELECT id FROM "user" WHERE role = 'admin' ORDER BY created_at ASC LIMIT 1), (SELECT id FROM "user" ORDER BY created_at ASC LIMIT 1) ) WHERE "user_id" IS NULL;--> statement-breakpoint -- Make user_id NOT NULL after populating ALTER TABLE "mcp_server" ALTER COLUMN "user_id" SET NOT NULL;--> statement-breakpoint DO $$ BEGIN ALTER TABLE "agent" ADD CONSTRAINT "agent_user_id_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$;--> statement-breakpoint DO $$ BEGIN ALTER TABLE "chat_message" ADD CONSTRAINT "chat_message_thread_id_chat_thread_id_fk" FOREIGN KEY ("thread_id") REFERENCES "public"."chat_thread"("id") ON DELETE cascade ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$;--> statement-breakpoint DO $$ BEGIN ALTER TABLE "chat_thread" ADD CONSTRAINT "chat_thread_user_id_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$;--> statement-breakpoint DO $$ BEGIN ALTER TABLE "mcp_server" ADD CONSTRAINT "mcp_server_user_id_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action; EXCEPTION WHEN duplicate_object THEN null; END $$;