-- CreateTable CREATE TABLE "User" ( "id" TEXT NOT NULL PRIMARY KEY, "email" TEXT NOT NULL, "username" TEXT NOT NULL, "password" TEXT NOT NULL, "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ); -- CreateTable CREATE TABLE "Conversation" ( "id" TEXT NOT NULL PRIMARY KEY, "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ); -- CreateTable CREATE TABLE "ConversationParticipant" ( "conversationId" TEXT NOT NULL, "userId" TEXT NOT NULL, "lastReadAt" DATETIME, PRIMARY KEY ("conversationId", "userId"), CONSTRAINT "ConversationParticipant_conversationId_fkey" FOREIGN KEY ("conversationId") REFERENCES "Conversation" ("id") ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT "ConversationParticipant_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE ); -- CreateTable CREATE TABLE "Message" ( "id" TEXT NOT NULL PRIMARY KEY, "conversationId" TEXT NOT NULL, "senderId" TEXT NOT NULL, "content" TEXT NOT NULL, "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "Message_conversationId_fkey" FOREIGN KEY ("conversationId") REFERENCES "Conversation" ("id") ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT "Message_senderId_fkey" FOREIGN KEY ("senderId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE ); -- CreateIndex CREATE UNIQUE INDEX "User_email_key" ON "User"("email"); -- CreateIndex CREATE UNIQUE INDEX "User_username_key" ON "User"("username"); -- CreateIndex CREATE INDEX "ConversationParticipant_userId_idx" ON "ConversationParticipant"("userId"); -- CreateIndex CREATE INDEX "Message_conversationId_createdAt_idx" ON "Message"("conversationId", "createdAt");