64 lines
2.4 KiB
MySQL
64 lines
2.4 KiB
MySQL
|
|
-- 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)
|
||
|
|
);
|