101 lines
4.5 KiB
SQL
101 lines
4.5 KiB
SQL
PRAGMA defer_foreign_keys=ON;
|
|
PRAGMA foreign_keys=OFF;
|
|
|
|
-- =====================
|
|
-- Channel
|
|
-- =====================
|
|
CREATE TABLE "new_Channel" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"ownerId" TEXT,
|
|
"ownerUsername" TEXT,
|
|
"name" TEXT NOT NULL,
|
|
"persistent" BOOLEAN NOT NULL,
|
|
CONSTRAINT "Channel_ownerUsername_fkey" FOREIGN KEY ("ownerUsername") REFERENCES "User" ("username") ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
INSERT INTO "new_Channel" ("id", "name", "ownerId", "ownerUsername", "persistent")
|
|
SELECT c."id", c."name", c."ownerId",
|
|
(SELECT u."username" FROM "User" u WHERE u."id" = c."ownerId"),
|
|
c."persistent"
|
|
FROM "Channel" c;
|
|
DROP TABLE "Channel";
|
|
ALTER TABLE "new_Channel" RENAME TO "Channel";
|
|
|
|
-- =====================
|
|
-- Message
|
|
-- =====================
|
|
CREATE TABLE "new_Message" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"text" TEXT NOT NULL,
|
|
"senderId" TEXT,
|
|
"senderUsername" TEXT,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL,
|
|
CONSTRAINT "Message_senderUsername_fkey" FOREIGN KEY ("senderUsername") REFERENCES "User" ("username") ON DELETE SET NULL ON UPDATE CASCADE
|
|
);
|
|
INSERT INTO "new_Message" ("id", "text", "senderId", "senderUsername", "createdAt", "updatedAt")
|
|
SELECT m."id", m."text", m."senderId",
|
|
(SELECT u."username" FROM "User" u WHERE u."id" = m."senderId"),
|
|
m."createdAt", m."updatedAt"
|
|
FROM "Message" m;
|
|
DROP TABLE "Message";
|
|
ALTER TABLE "new_Message" RENAME TO "Message";
|
|
|
|
-- =====================
|
|
-- Session
|
|
-- =====================
|
|
CREATE TABLE "new_Session" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"userId" TEXT NOT NULL,
|
|
"username" TEXT NOT NULL,
|
|
"expiresAt" DATETIME NOT NULL,
|
|
CONSTRAINT "Session_username_fkey" FOREIGN KEY ("username") REFERENCES "User" ("username") ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
INSERT INTO "new_Session" ("id", "userId", "username", "expiresAt")
|
|
SELECT s."id", s."userId",
|
|
(SELECT u."username" FROM "User" u WHERE u."id" = s."userId"),
|
|
s."expiresAt"
|
|
FROM "Session" s;
|
|
DROP TABLE "Session";
|
|
ALTER TABLE "new_Session" RENAME TO "Session";
|
|
CREATE INDEX "Session_userId_idx" ON "Session"("userId");
|
|
|
|
-- =====================
|
|
-- User
|
|
-- =====================
|
|
CREATE TABLE "new_User" (
|
|
"id" TEXT NOT NULL,
|
|
"username" TEXT NOT NULL PRIMARY KEY,
|
|
"password" TEXT NOT NULL,
|
|
"displayName" TEXT NOT NULL,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL
|
|
);
|
|
INSERT INTO "new_User" ("createdAt", "displayName", "id", "password", "updatedAt", "username")
|
|
SELECT "createdAt", "displayName", "id", "password", "updatedAt", "username"
|
|
FROM "User";
|
|
DROP TABLE "User";
|
|
ALTER TABLE "new_User" RENAME TO "User";
|
|
CREATE UNIQUE INDEX "User_username_key" ON "User"("username");
|
|
|
|
-- =====================
|
|
-- UserPreferences
|
|
-- =====================
|
|
CREATE TABLE "new_UserPreferences" (
|
|
"userId" TEXT NOT NULL,
|
|
"username" TEXT NOT NULL PRIMARY KEY,
|
|
"toggleInputHotkey" TEXT DEFAULT '',
|
|
"toggleOutputHotkey" TEXT DEFAULT '',
|
|
CONSTRAINT "UserPreferences_username_fkey" FOREIGN KEY ("username") REFERENCES "User" ("username") ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
INSERT INTO "new_UserPreferences" ("userId", "username", "toggleInputHotkey", "toggleOutputHotkey")
|
|
SELECT up."userId",
|
|
(SELECT u."username" FROM "User" u WHERE u."id" = up."userId"),
|
|
up."toggleInputHotkey", up."toggleOutputHotkey"
|
|
FROM "UserPreferences" up;
|
|
DROP TABLE "UserPreferences";
|
|
ALTER TABLE "new_UserPreferences" RENAME TO "UserPreferences";
|
|
CREATE UNIQUE INDEX "UserPreferences_userId_key" ON "UserPreferences"("userId");
|
|
CREATE UNIQUE INDEX "UserPreferences_username_key" ON "UserPreferences"("username");
|
|
|
|
PRAGMA foreign_keys=ON;
|
|
PRAGMA defer_foreign_keys=OFF; |