|
|
|
@@ -0,0 +1,159 @@
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "rooms" (
|
|
|
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
|
|
|
"userId" TEXT NOT NULL,
|
|
|
|
|
"mode" TEXT NOT NULL,
|
|
|
|
|
"status" TEXT NOT NULL DEFAULT 'ACTIVE',
|
|
|
|
|
"topicSeed" TEXT,
|
|
|
|
|
"autoAdvanceEnabled" BOOLEAN NOT NULL DEFAULT true,
|
|
|
|
|
"muted" BOOLEAN NOT NULL DEFAULT false,
|
|
|
|
|
"lastAdvancedAt" DATETIME,
|
|
|
|
|
"closedAt" DATETIME,
|
|
|
|
|
"closeReason" TEXT,
|
|
|
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
"updatedAt" DATETIME NOT NULL,
|
|
|
|
|
CONSTRAINT "rooms_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "room_members" (
|
|
|
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
|
|
|
"roomId" TEXT NOT NULL,
|
|
|
|
|
"characterId" TEXT NOT NULL,
|
|
|
|
|
"activeCharacterId" TEXT,
|
|
|
|
|
"joinedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
"leftAt" DATETIME,
|
|
|
|
|
"leaveReason" TEXT,
|
|
|
|
|
CONSTRAINT "room_members_roomId_fkey" FOREIGN KEY ("roomId") REFERENCES "rooms" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
|
|
|
CONSTRAINT "room_members_characterId_fkey" FOREIGN KEY ("characterId") REFERENCES "characters" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "room_turns" (
|
|
|
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
|
|
|
"roomId" TEXT NOT NULL,
|
|
|
|
|
"seq" INTEGER NOT NULL,
|
|
|
|
|
"kind" TEXT NOT NULL DEFAULT 'TALK',
|
|
|
|
|
"speakerCharacterId" TEXT,
|
|
|
|
|
"content" TEXT NOT NULL,
|
|
|
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
CONSTRAINT "room_turns_roomId_fkey" FOREIGN KEY ("roomId") REFERENCES "rooms" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
|
|
|
CONSTRAINT "room_turns_speakerCharacterId_fkey" FOREIGN KEY ("speakerCharacterId") REFERENCES "characters" ("id") ON DELETE SET NULL ON UPDATE CASCADE
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "room_read_states" (
|
|
|
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
|
|
|
"roomId" TEXT NOT NULL,
|
|
|
|
|
"userId" TEXT NOT NULL,
|
|
|
|
|
"lastReadSeq" INTEGER NOT NULL DEFAULT 0,
|
|
|
|
|
"updatedAt" DATETIME NOT NULL,
|
|
|
|
|
CONSTRAINT "room_read_states_roomId_fkey" FOREIGN KEY ("roomId") REFERENCES "rooms" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
|
|
|
CONSTRAINT "room_read_states_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "room_usage_logs" (
|
|
|
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
|
|
|
"roomId" TEXT NOT NULL,
|
|
|
|
|
"model" TEXT NOT NULL,
|
|
|
|
|
"promptTokens" INTEGER NOT NULL,
|
|
|
|
|
"completionTokens" INTEGER NOT NULL,
|
|
|
|
|
"turnSeq" INTEGER NOT NULL,
|
|
|
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
CONSTRAINT "room_usage_logs_roomId_fkey" FOREIGN KEY ("roomId") REFERENCES "rooms" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "call_attempt_logs" (
|
|
|
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
|
|
|
"userId" TEXT NOT NULL,
|
|
|
|
|
"characterId" TEXT NOT NULL,
|
|
|
|
|
"accepted" BOOLEAN NOT NULL,
|
|
|
|
|
"reason" TEXT,
|
|
|
|
|
"delegatedByCharacterId" TEXT,
|
|
|
|
|
"resultingRoomId" TEXT,
|
|
|
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
CONSTRAINT "call_attempt_logs_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
|
|
|
CONSTRAINT "call_attempt_logs_characterId_fkey" FOREIGN KEY ("characterId") REFERENCES "characters" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
|
|
|
CONSTRAINT "call_attempt_logs_delegatedByCharacterId_fkey" FOREIGN KEY ("delegatedByCharacterId") REFERENCES "characters" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
|
|
|
|
|
CONSTRAINT "call_attempt_logs_resultingRoomId_fkey" FOREIGN KEY ("resultingRoomId") REFERENCES "rooms" ("id") ON DELETE SET NULL ON UPDATE CASCADE
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "room_invitations" (
|
|
|
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
|
|
|
"roomId" TEXT NOT NULL,
|
|
|
|
|
"characterId" TEXT NOT NULL,
|
|
|
|
|
"invitedByCharacterId" TEXT,
|
|
|
|
|
"status" TEXT NOT NULL DEFAULT 'PENDING',
|
|
|
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
"respondedAt" DATETIME,
|
|
|
|
|
CONSTRAINT "room_invitations_roomId_fkey" FOREIGN KEY ("roomId") REFERENCES "rooms" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
|
|
|
CONSTRAINT "room_invitations_characterId_fkey" FOREIGN KEY ("characterId") REFERENCES "characters" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
|
|
|
CONSTRAINT "room_invitations_invitedByCharacterId_fkey" FOREIGN KEY ("invitedByCharacterId") REFERENCES "characters" ("id") ON DELETE SET NULL ON UPDATE CASCADE
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "ending_detection_logs" (
|
|
|
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
|
|
|
"sceneId" TEXT NOT NULL,
|
|
|
|
|
"evidence" TEXT NOT NULL,
|
|
|
|
|
"resolution" TEXT NOT NULL DEFAULT 'PENDING',
|
|
|
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
"respondedAt" DATETIME,
|
|
|
|
|
CONSTRAINT "ending_detection_logs_sceneId_fkey" FOREIGN KEY ("sceneId") REFERENCES "scenes" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "character_emotion_baselines" (
|
|
|
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
|
|
|
"characterId" TEXT NOT NULL,
|
|
|
|
|
"emotionTag" TEXT NOT NULL,
|
|
|
|
|
"intensity" REAL NOT NULL,
|
|
|
|
|
"sourceSceneId" TEXT,
|
|
|
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
CONSTRAINT "character_emotion_baselines_characterId_fkey" FOREIGN KEY ("characterId") REFERENCES "characters" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
|
|
|
CONSTRAINT "character_emotion_baselines_sourceSceneId_fkey" FOREIGN KEY ("sourceSceneId") REFERENCES "scenes" ("id") ON DELETE SET NULL ON UPDATE CASCADE
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- RedefineTables
|
|
|
|
|
PRAGMA defer_foreign_keys=ON;
|
|
|
|
|
PRAGMA foreign_keys=OFF;
|
|
|
|
|
CREATE TABLE "new_tasks" (
|
|
|
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
|
|
|
"characterId" TEXT NOT NULL,
|
|
|
|
|
"userId" TEXT NOT NULL,
|
|
|
|
|
"type" TEXT NOT NULL,
|
|
|
|
|
"content" TEXT NOT NULL,
|
|
|
|
|
"rawText" TEXT NOT NULL,
|
|
|
|
|
"triggerAt" DATETIME,
|
|
|
|
|
"cronExpression" TEXT,
|
|
|
|
|
"condition" TEXT,
|
|
|
|
|
"status" TEXT NOT NULL DEFAULT 'PENDING',
|
|
|
|
|
"triggeredAt" DATETIME,
|
|
|
|
|
"triggerMessage" TEXT,
|
|
|
|
|
"overdueNudgeCount" INTEGER NOT NULL DEFAULT 0,
|
|
|
|
|
"lastNudgeAt" DATETIME,
|
|
|
|
|
"sourceRoomId" TEXT,
|
|
|
|
|
"completedAt" DATETIME,
|
|
|
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
"updatedAt" DATETIME NOT NULL,
|
|
|
|
|
CONSTRAINT "tasks_characterId_fkey" FOREIGN KEY ("characterId") REFERENCES "characters" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
|
|
|
CONSTRAINT "tasks_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
|
|
|
CONSTRAINT "tasks_sourceRoomId_fkey" FOREIGN KEY ("sourceRoomId") REFERENCES "rooms" ("id") ON DELETE SET NULL ON UPDATE CASCADE
|
|
|
|
|
);
|
|
|
|
|
INSERT INTO "new_tasks" ("characterId", "completedAt", "condition", "content", "createdAt", "cronExpression", "id", "lastNudgeAt", "overdueNudgeCount", "rawText", "status", "triggerAt", "triggerMessage", "triggeredAt", "type", "updatedAt", "userId") SELECT "characterId", "completedAt", "condition", "content", "createdAt", "cronExpression", "id", "lastNudgeAt", "overdueNudgeCount", "rawText", "status", "triggerAt", "triggerMessage", "triggeredAt", "type", "updatedAt", "userId" FROM "tasks";
|
|
|
|
|
DROP TABLE "tasks";
|
|
|
|
|
ALTER TABLE "new_tasks" RENAME TO "tasks";
|
|
|
|
|
PRAGMA foreign_keys=ON;
|
|
|
|
|
PRAGMA defer_foreign_keys=OFF;
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "room_members_activeCharacterId_key" ON "room_members"("activeCharacterId");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "room_turns_roomId_seq_key" ON "room_turns"("roomId", "seq");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "room_read_states_roomId_userId_key" ON "room_read_states"("roomId", "userId");
|