From 5e7e537b955bafd4a8bd855347a1f6466ce8d027 Mon Sep 17 00:00:00 2001 From: Pinapelz Date: Sun, 29 Jun 2025 17:50:28 -0700 Subject: add game and score schema to orm --- backend/package-lock.json | 85 ++++++++++++++++++++++++-------------------- backend/package.json | 5 +-- backend/prisma/schema.prisma | 15 -------- backend/prisma/seed.ts | 21 +++++++++++ backend/schema.prisma | 15 ++++++++ 5 files changed, 86 insertions(+), 55 deletions(-) delete mode 100644 backend/prisma/schema.prisma create mode 100644 backend/prisma/seed.ts (limited to 'backend') diff --git a/backend/package-lock.json b/backend/package-lock.json index 6afd91e..92cdd5c 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/client": "^6.9.0", + "@prisma/client": "^6.10.1", "@types/bcrypt": "^5.0.2", "@types/cookie-parser": "^1.4.9", "@types/express-session": "^1.18.2", @@ -27,7 +27,7 @@ "@types/express": "^4.17.23", "@types/node": "^24.0.3", "@types/sqlite3": "^5.1.0", - "prisma": "^6.9.0", + "prisma": "^6.10.1", "ts-node-dev": "^2.0.0", "typescript": "^5.8.3" } @@ -100,10 +100,11 @@ } }, "node_modules/@prisma/client": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.9.0.tgz", - "integrity": "sha512-Gg7j1hwy3SgF1KHrh0PZsYvAaykeR0PaxusnLXydehS96voYCGt1U5zVR31NIouYc63hWzidcrir1a7AIyCsNQ==", + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.10.1.tgz", + "integrity": "sha512-Re4pMlcUsQsUTAYMK7EJ4Bw2kg3WfZAAlr8GjORJaK4VOP6LxRQUQ1TuLnxcF42XqGkWQ36q5CQF1yVadANQ6w==", "hasInstallScript": true, + "license": "Apache-2.0", "engines": { "node": ">=18.18" }, @@ -121,57 +122,63 @@ } }, "node_modules/@prisma/config": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.9.0.tgz", - "integrity": "sha512-Wcfk8/lN3WRJd5w4jmNQkUwhUw0eksaU/+BlAJwPQKW10k0h0LC9PD/6TQFmqKVbHQL0vG2z266r0S1MPzzhbA==", + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.10.1.tgz", + "integrity": "sha512-kz4/bnqrOrzWo8KzYguN0cden4CzLJJ+2VSpKtF8utHS3l1JS0Lhv6BLwpOX6X9yNreTbZQZwewb+/BMPDCIYQ==", "devOptional": true, + "license": "Apache-2.0", "dependencies": { "jiti": "2.4.2" } }, "node_modules/@prisma/debug": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.9.0.tgz", - "integrity": "sha512-bFeur/qi/Q+Mqk4JdQ3R38upSYPebv5aOyD1RKywVD+rAMLtRkmTFn28ZuTtVOnZHEdtxnNOCH+bPIeSGz1+Fg==", - "devOptional": true + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.10.1.tgz", + "integrity": "sha512-k2YT53cWxv9OLjW4zSYTZ6Z7j0gPfCzcr2Mj99qsuvlxr8WAKSZ2NcSR0zLf/mP4oxnYG842IMj3utTgcd7CaA==", + "devOptional": true, + "license": "Apache-2.0" }, "node_modules/@prisma/engines": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.9.0.tgz", - "integrity": "sha512-im0X0bwDLA0244CDf8fuvnLuCQcBBdAGgr+ByvGfQY9wWl6EA+kRGwVk8ZIpG65rnlOwtaWIr/ZcEU5pNVvq9g==", + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.10.1.tgz", + "integrity": "sha512-Q07P5rS2iPwk2IQr/rUQJ42tHjpPyFcbiH7PXZlV81Ryr9NYIgdxcUrwgVOWVm5T7ap02C0dNd1dpnNcSWig8A==", "devOptional": true, "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "6.9.0", - "@prisma/engines-version": "6.9.0-10.81e4af48011447c3cc503a190e86995b66d2a28e", - "@prisma/fetch-engine": "6.9.0", - "@prisma/get-platform": "6.9.0" + "@prisma/debug": "6.10.1", + "@prisma/engines-version": "6.10.1-1.9b628578b3b7cae625e8c927178f15a170e74a9c", + "@prisma/fetch-engine": "6.10.1", + "@prisma/get-platform": "6.10.1" } }, "node_modules/@prisma/engines-version": { - "version": "6.9.0-10.81e4af48011447c3cc503a190e86995b66d2a28e", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.9.0-10.81e4af48011447c3cc503a190e86995b66d2a28e.tgz", - "integrity": "sha512-Qp9gMoBHgqhKlrvumZWujmuD7q4DV/gooEyPCLtbkc13EZdSz2RsGUJ5mHb3RJgAbk+dm6XenqG7obJEhXcJ6Q==", - "devOptional": true + "version": "6.10.1-1.9b628578b3b7cae625e8c927178f15a170e74a9c", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.10.1-1.9b628578b3b7cae625e8c927178f15a170e74a9c.tgz", + "integrity": "sha512-ZJFTsEqapiTYVzXya6TUKYDFnSWCNegfUiG5ik9fleQva5Sk3DNyyUi7X1+0ZxWFHwHDr6BZV5Vm+iwP+LlciA==", + "devOptional": true, + "license": "Apache-2.0" }, "node_modules/@prisma/fetch-engine": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.9.0.tgz", - "integrity": "sha512-PMKhJdl4fOdeE3J3NkcWZ+tf3W6rx3ht/rLU8w4SXFRcLhd5+3VcqY4Kslpdm8osca4ej3gTfB3+cSk5pGxgFg==", + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.10.1.tgz", + "integrity": "sha512-clmbG/Jgmrc/n6Y77QcBmAUlq9LrwI9Dbgy4pq5jeEARBpRCWJDJ7PWW1P8p0LfFU0i5fsyO7FqRzRB8mkdS4g==", "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "6.9.0", - "@prisma/engines-version": "6.9.0-10.81e4af48011447c3cc503a190e86995b66d2a28e", - "@prisma/get-platform": "6.9.0" + "@prisma/debug": "6.10.1", + "@prisma/engines-version": "6.10.1-1.9b628578b3b7cae625e8c927178f15a170e74a9c", + "@prisma/get-platform": "6.10.1" } }, "node_modules/@prisma/get-platform": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.9.0.tgz", - "integrity": "sha512-/B4n+5V1LI/1JQcHp+sUpyRT1bBgZVPHbsC4lt4/19Xp4jvNIVcq5KYNtQDk5e/ukTSjo9PZVAxxy9ieFtlpTQ==", + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.10.1.tgz", + "integrity": "sha512-4CY5ndKylcsce9Mv+VWp5obbR2/86SHOLVV053pwIkhVtT9C9A83yqiqI/5kJM9T1v1u1qco/bYjDKycmei9HA==", "devOptional": true, + "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "6.9.0" + "@prisma/debug": "6.10.1" } }, "node_modules/@tootallnate/once": { @@ -1729,6 +1736,7 @@ "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", "devOptional": true, + "license": "MIT", "bin": { "jiti": "lib/jiti-cli.mjs" } @@ -2277,14 +2285,15 @@ } }, "node_modules/prisma": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.9.0.tgz", - "integrity": "sha512-resJAwMyZREC/I40LF6FZ6rZTnlrlrYrb63oW37Gq+U+9xHwbyMSPJjKtM7VZf3gTO86t/Oyz+YeSXr3CmAY1Q==", + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.10.1.tgz", + "integrity": "sha512-khhlC/G49E4+uyA3T3H5PRBut486HD2bDqE2+rvkU0pwk9IAqGFacLFUyIx9Uw+W2eCtf6XGwsp+/strUwMNPw==", "devOptional": true, "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { - "@prisma/config": "6.9.0", - "@prisma/engines": "6.9.0" + "@prisma/config": "6.10.1", + "@prisma/engines": "6.10.1" }, "bin": { "prisma": "build/index.js" diff --git a/backend/package.json b/backend/package.json index 70d2aac..4686f00 100644 --- a/backend/package.json +++ b/backend/package.json @@ -5,13 +5,14 @@ "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", + "seed": "ts-node prisma/seed.ts", "dev": "ts-node-dev src/index.ts" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { - "@prisma/client": "^6.9.0", + "@prisma/client": "^6.10.1", "@types/bcrypt": "^5.0.2", "@types/cookie-parser": "^1.4.9", "@types/express-session": "^1.18.2", @@ -29,7 +30,7 @@ "@types/express": "^4.17.23", "@types/node": "^24.0.3", "@types/sqlite3": "^5.1.0", - "prisma": "^6.9.0", + "prisma": "^6.10.1", "ts-node-dev": "^2.0.0", "typescript": "^5.8.3" } diff --git a/backend/prisma/schema.prisma b/backend/prisma/schema.prisma deleted file mode 100644 index aaeee1b..0000000 --- a/backend/prisma/schema.prisma +++ /dev/null @@ -1,15 +0,0 @@ -// This is your Prisma schema file, -// learn more about it in the docs: https://pris.ly/d/prisma-schema - -// Looking for ways to speed up your queries, or scale easily with your serverless or edge functions? -// Try Prisma Accelerate: https://pris.ly/cli/accelerate-init - -generator client { - provider = "prisma-client-js" - output = "../src/generated/prisma" -} - -datasource db { - provider = "postgresql" - url = env("DATABASE_URL") -} diff --git a/backend/prisma/seed.ts b/backend/prisma/seed.ts new file mode 100644 index 0000000..9f98e81 --- /dev/null +++ b/backend/prisma/seed.ts @@ -0,0 +1,21 @@ +import { PrismaClient } from '@prisma/client'; + +const prisma = new PrismaClient(); + +async function main() { + await prisma.games.createMany({ + data: [ + { gameName: 'Dancerush' }, + ], + }); + console.log('Initial seed data inserted'); +} + +main() + .catch((e) => { + console.error(e); + process.exit(1); + }) + .finally(async () => { + await prisma.$disconnect(); + }); diff --git a/backend/schema.prisma b/backend/schema.prisma index e5c4039..d3c0588 100644 --- a/backend/schema.prisma +++ b/backend/schema.prisma @@ -23,3 +23,18 @@ model Session { createdAt DateTime @default(now()) expiresAt DateTime } + +model Game { + id Int @id @default(autoincrement()) + name String @unique + scores Score[] +} + +model Score { + id Int @id @default(autoincrement()) + gameId Int + userId Int + data Json // arbitrary data in json format + game Game @relation(fields: [gameId], references: [id]) + user User @relation(fields: [userId], references: [id]) +} -- cgit v1.2.3