-- CreateEnum CREATE TYPE "MessageRole" AS ENUM ('system', 'user', 'assistant'); -- CreateTable CREATE TABLE "user" ( "id" TEXT NOT NULL, "name" TEXT NOT NULL, "email" TEXT NOT NULL, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, CONSTRAINT "user_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "chat" ( "id" TEXT NOT NULL, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, "title" TEXT NOT NULL DEFAULT '(no title)', "userId" TEXT, "mediaUrl" TEXT NOT NULL, CONSTRAINT "chat_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "message" ( "id" TEXT NOT NULL, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, "userId" TEXT, "chatId" TEXT NOT NULL, "content" TEXT NOT NULL, "result" JSONB, "role" "MessageRole" NOT NULL, CONSTRAINT "message_pkey" PRIMARY KEY ("id") ); -- CreateIndex CREATE UNIQUE INDEX "user_email_key" ON "user"("email"); -- AddForeignKey ALTER TABLE "chat" ADD CONSTRAINT "chat_userId_fkey" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE SET NULL ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "message" ADD CONSTRAINT "message_chatId_fkey" FOREIGN KEY ("chatId") REFERENCES "chat"("id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "message" ADD CONSTRAINT "message_userId_fkey" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE SET NULL ON UPDATE CASCADE;