Add server only to restrict things properly, starting on Prisma setup.

This commit is contained in:
2025-03-18 09:48:08 -05:00
parent da34ccfa0c
commit 4b25b58c18
16 changed files with 391 additions and 3 deletions

View File

@ -0,0 +1,58 @@
-- 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");

View File

@ -0,0 +1,3 @@
# Please do not edit this file manually
# It should be added in your version-control system (e.g., Git)
provider = "sqlite"

55
prisma/schema.prisma Normal file
View File

@ -0,0 +1,55 @@
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "sqlite"
url = env("DATABASE_URL")
}
model User {
id Int @id @default(autoincrement())
uuid String @unique
email String @unique
name String?
createdAt DateTime @default(now())
language String? @default("en")
sessions UserSession[]
saves GameSave[]
}
model UserSession {
id Int @id @default(autoincrement())
uuid String @unique
userId Int
createdAt DateTime @default(now())
expiresAt DateTime
user User @relation(fields: [userId], references: [id])
}
model Game {
id Int @id @default(autoincrement())
uuid String @unique
title String
system String
genre String?
publisher String?
developer String?
description String?
saves GameSave[]
}
model GameSave {
id Int @id @default(autoincrement())
uuid String @unique
data Bytes
createdAt DateTime @default(now())
gameId Int
userId Int
game Game @relation(fields: [gameId], references: [id])
user User @relation(fields: [userId], references: [id])
}