BangSo/packages/db/prisma/migrations/0013_group_chats/migration.sql

64 lines
2.4 KiB
MySQL
Raw Permalink Normal View History

2026-09-01 16:51:19 +00:00
-- CreateTable
CREATE TABLE "chat_groups" (
"id" TEXT NOT NULL,
"workspaceId" TEXT NOT NULL,
"userId" TEXT NOT NULL,
"name" TEXT NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "chat_groups_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "chat_group_members" (
"id" TEXT NOT NULL,
"groupId" TEXT NOT NULL,
"botId" TEXT NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "chat_group_members_pkey" PRIMARY KEY ("id")
);
-- AlterTable
ALTER TABLE "threads" ALTER COLUMN "botId" DROP NOT NULL;
-- AlterTable
ALTER TABLE "threads" ADD COLUMN "groupId" TEXT;
-- AlterTable
ALTER TABLE "messages" ADD COLUMN "botId" TEXT;
ALTER TABLE "messages" ADD COLUMN "replyToMessageId" TEXT;
-- CreateIndex
CREATE UNIQUE INDEX "threads_groupId_key" ON "threads"("groupId");
-- CreateIndex
CREATE INDEX "chat_groups_workspaceId_userId_updatedAt_idx" ON "chat_groups"("workspaceId", "userId", "updatedAt");
-- CreateIndex
CREATE UNIQUE INDEX "chat_group_members_groupId_botId_key" ON "chat_group_members"("groupId", "botId");
-- CreateIndex
CREATE INDEX "chat_group_members_botId_idx" ON "chat_group_members"("botId");
-- AddForeignKey
ALTER TABLE "chat_groups" ADD CONSTRAINT "chat_groups_workspaceId_fkey" FOREIGN KEY ("workspaceId") REFERENCES "organization"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "chat_group_members" ADD CONSTRAINT "chat_group_members_groupId_fkey" FOREIGN KEY ("groupId") REFERENCES "chat_groups"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "chat_group_members" ADD CONSTRAINT "chat_group_members_botId_fkey" FOREIGN KEY ("botId") REFERENCES "bots"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "threads" ADD CONSTRAINT "threads_groupId_fkey" FOREIGN KEY ("groupId") REFERENCES "chat_groups"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "messages" ADD CONSTRAINT "messages_replyToMessageId_fkey" FOREIGN KEY ("replyToMessageId") REFERENCES "messages"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- Ensure each thread is either a 1:1 bot thread or a group thread
ALTER TABLE "threads" ADD CONSTRAINT "threads_bot_or_group_chk" CHECK (
("botId" IS NOT NULL AND "groupId" IS NULL) OR ("botId" IS NULL AND "groupId" IS NOT NULL)
);