-- CreateTable CREATE TABLE "User" ( "id" TEXT NOT NULL PRIMARY KEY, "username" TEXT NOT NULL, "groupId" TEXT NOT NULL, "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "User_groupId_fkey" FOREIGN KEY ("groupId") REFERENCES "Group" ("id") ON DELETE RESTRICT ON UPDATE CASCADE ); -- CreateTable CREATE TABLE "Group" ( "id" TEXT NOT NULL PRIMARY KEY, "name" TEXT NOT NULL ); -- CreateTable CREATE TABLE "Bot" ( "id" TEXT NOT NULL PRIMARY KEY, "name" TEXT NOT NULL, "isActive" BOOLEAN NOT NULL DEFAULT true, "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ); -- CreateTable CREATE TABLE "ChatState" ( "id" TEXT NOT NULL PRIMARY KEY, "userId" TEXT NOT NULL, "botId" TEXT NOT NULL, "stateJson" JSONB NOT NULL, "lockedByBot" BOOLEAN NOT NULL DEFAULT false, "updatedAt" DATETIME NOT NULL ); -- CreateTable CREATE TABLE "Log" ( "id" TEXT NOT NULL PRIMARY KEY, "userId" TEXT NOT NULL, "botId" TEXT NOT NULL, "direction" TEXT NOT NULL, "message" TEXT NOT NULL, "timestamp" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ); -- CreateTable CREATE TABLE "_BotGroups" ( "A" TEXT NOT NULL, "B" TEXT NOT NULL, CONSTRAINT "_BotGroups_A_fkey" FOREIGN KEY ("A") REFERENCES "Bot" ("id") ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT "_BotGroups_B_fkey" FOREIGN KEY ("B") REFERENCES "Group" ("id") ON DELETE CASCADE ON UPDATE CASCADE ); -- CreateIndex CREATE UNIQUE INDEX "User_username_key" ON "User"("username"); -- CreateIndex CREATE UNIQUE INDEX "Group_name_key" ON "Group"("name"); -- CreateIndex CREATE UNIQUE INDEX "Bot_name_key" ON "Bot"("name"); -- CreateIndex CREATE UNIQUE INDEX "_BotGroups_AB_unique" ON "_BotGroups"("A", "B"); -- CreateIndex CREATE INDEX "_BotGroups_B_index" ON "_BotGroups"("B");