59 lines
1.8 KiB
SQL
59 lines
1.8 KiB
SQL
-- CreateTable
|
|
CREATE TABLE "User" (
|
|
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
|
"uuid" TEXT NOT NULL,
|
|
"email" TEXT NOT NULL,
|
|
"name" TEXT,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"language" TEXT DEFAULT 'en'
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "UserSession" (
|
|
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
|
"uuid" TEXT NOT NULL,
|
|
"userId" INTEGER NOT NULL,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"expiresAt" DATETIME NOT NULL,
|
|
CONSTRAINT "UserSession_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Game" (
|
|
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
|
"uuid" TEXT NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"system" TEXT NOT NULL,
|
|
"genre" TEXT,
|
|
"publisher" TEXT,
|
|
"developer" TEXT,
|
|
"description" TEXT
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "GameSave" (
|
|
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
|
"uuid" TEXT NOT NULL,
|
|
"data" BLOB NOT NULL,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"gameId" INTEGER NOT NULL,
|
|
"userId" INTEGER NOT NULL,
|
|
CONSTRAINT "GameSave_gameId_fkey" FOREIGN KEY ("gameId") REFERENCES "Game" ("id") ON DELETE RESTRICT ON UPDATE CASCADE,
|
|
CONSTRAINT "GameSave_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "User_uuid_key" ON "User"("uuid");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "UserSession_uuid_key" ON "UserSession"("uuid");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Game_uuid_key" ON "Game"("uuid");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "GameSave_uuid_key" ON "GameSave"("uuid");
|