cynarAI 6c7eed7580 Initial clean evOo-local from f00577b
Fresh history cut from cynarAI/evoo antigravity-handoff/project-timeline
(Voice First + project timeline). Brand docs/titles as evOo; keep @rakazo/*
packages as tech debt. Excludes node_modules, caches, secrets, voice blobs.
2026-09-20 17:15:16 +02:00

64 lines
2.4 KiB
SQL

-- 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)
);