From c0194f7f02d25abbcb8645c297d9f7b9f02236fc Mon Sep 17 00:00:00 2001 From: michael-m-2983 Date: Wed, 10 Jul 2024 15:23:44 -0500 Subject: [PATCH] Add PrismaJS --- .gitignore | 5 +- package-lock.json | 84 ++++++++++++++++++- package.json | 2 + .../migration.sql | 29 +++++++ prisma/migrations/migration_lock.toml | 3 + prisma/schema.prisma | 31 +++++++ 6 files changed, 151 insertions(+), 3 deletions(-) create mode 100644 prisma/migrations/20240710193430_initial_migration/migration.sql create mode 100644 prisma/migrations/migration_lock.toml create mode 100644 prisma/schema.prisma diff --git a/.gitignore b/.gitignore index 93a613b..e81cf2b 100644 --- a/.gitignore +++ b/.gitignore @@ -46,4 +46,7 @@ next-env.d.ts # Diagrams and Drawings *.xcf -*.png \ No newline at end of file +*.png + +# Prisma Database +prisma/dev* \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 9a8faf9..6edcef7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "turbo-scout", - "version": "0.1.0", + "version": "2024", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "turbo-scout", - "version": "0.1.0", + "version": "2024", "dependencies": { "@ducanh2912/next-pwa": "^10.2.5", "@mantine/carousel": "^7.6.2", @@ -20,6 +20,7 @@ "@mantine/notifications": "^7.6.2", "@mantine/nprogress": "^7.6.2", "@mantine/tiptap": "^7.6.2", + "@prisma/client": "^5.16.2", "@tabler/icons-react": "^3.1.0", "@tiptap/extension-link": "^2.2.4", "@tiptap/react": "^2.2.4", @@ -46,6 +47,7 @@ "postcss": "^8.4.35", "postcss-preset-mantine": "^1.13.0", "postcss-simple-vars": "^7.0.1", + "prisma": "^5.16.2", "typescript": "^5", "webpack": "^5.91.0" } @@ -2637,6 +2639,68 @@ "url": "https://opencollective.com/popperjs" } }, + "node_modules/@prisma/client": { + "version": "5.16.2", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-5.16.2.tgz", + "integrity": "sha512-+1lmkhR9gHWcTC5oghm2ZKpWljyWdzfazCVlLKUWXVmwHSf52g81aZ8qb6Km5Bs025yBi7puLp3qSLEvktoUtw==", + "hasInstallScript": true, + "engines": { + "node": ">=16.13" + }, + "peerDependencies": { + "prisma": "*" + }, + "peerDependenciesMeta": { + "prisma": { + "optional": true + } + } + }, + "node_modules/@prisma/debug": { + "version": "5.16.2", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-5.16.2.tgz", + "integrity": "sha512-ItzB4nR4O8eLzuJiuP3WwUJfoIvewMHqpGCad+64gvThcKEVOtaUza9AEJo2DPqAOa/AWkFyK54oM4WwHeew+A==", + "devOptional": true + }, + "node_modules/@prisma/engines": { + "version": "5.16.2", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-5.16.2.tgz", + "integrity": "sha512-qUxwMtrwoG3byd4PbX6T7EjHJ8AUhzTuwniOGkh/hIznBfcE2QQnGakyEq4VnwNuttMqvh/GgPFapHQ3lCuRHg==", + "devOptional": true, + "hasInstallScript": true, + "dependencies": { + "@prisma/debug": "5.16.2", + "@prisma/engines-version": "5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303", + "@prisma/fetch-engine": "5.16.2", + "@prisma/get-platform": "5.16.2" + } + }, + "node_modules/@prisma/engines-version": { + "version": "5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303.tgz", + "integrity": "sha512-HkT2WbfmFZ9WUPyuJHhkiADxazHg8Y4gByrTSVeb3OikP6tjQ7txtSUGu9OBOBH0C13dPKN2qqH12xKtHu/Hiw==", + "devOptional": true + }, + "node_modules/@prisma/fetch-engine": { + "version": "5.16.2", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-5.16.2.tgz", + "integrity": "sha512-sq51lfHKfH2jjYSjBtMjP+AznFqOJzXpqmq6B9auWrlTJrMgZ7lPyhWUW7VU7LsQU48/TJ+DZeIz8s9bMYvcHg==", + "devOptional": true, + "dependencies": { + "@prisma/debug": "5.16.2", + "@prisma/engines-version": "5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303", + "@prisma/get-platform": "5.16.2" + } + }, + "node_modules/@prisma/get-platform": { + "version": "5.16.2", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-5.16.2.tgz", + "integrity": "sha512-cXiHPgNLNyj22vLouPVNegklpRL/iX2jxTeap5GRO3DmCoVyIHmJAV1CgUMUJhHlcol9yYy7EHvsnXTDJ/PKEA==", + "devOptional": true, + "dependencies": { + "@prisma/debug": "5.16.2" + } + }, "node_modules/@remirror/core-constants": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/@remirror/core-constants/-/core-constants-2.0.2.tgz", @@ -7302,6 +7366,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/prisma": { + "version": "5.16.2", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-5.16.2.tgz", + "integrity": "sha512-rFV/xoBR2hBGGlu4LPLQd4U8WVA+tSAmYyFWGPRVfj+xg7N4kiZV4lSk38htSpF+/IuHKzlrbh4SFk8Z18cI8A==", + "devOptional": true, + "hasInstallScript": true, + "dependencies": { + "@prisma/engines": "5.16.2" + }, + "bin": { + "prisma": "build/index.js" + }, + "engines": { + "node": ">=16.13" + } + }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", diff --git a/package.json b/package.json index c5cea5b..e0100cf 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "@mantine/notifications": "^7.6.2", "@mantine/nprogress": "^7.6.2", "@mantine/tiptap": "^7.6.2", + "@prisma/client": "^5.16.2", "@tabler/icons-react": "^3.1.0", "@tiptap/extension-link": "^2.2.4", "@tiptap/react": "^2.2.4", @@ -47,6 +48,7 @@ "postcss": "^8.4.35", "postcss-preset-mantine": "^1.13.0", "postcss-simple-vars": "^7.0.1", + "prisma": "^5.16.2", "typescript": "^5", "webpack": "^5.91.0" } diff --git a/prisma/migrations/20240710193430_initial_migration/migration.sql b/prisma/migrations/20240710193430_initial_migration/migration.sql new file mode 100644 index 0000000..7f4b088 --- /dev/null +++ b/prisma/migrations/20240710193430_initial_migration/migration.sql @@ -0,0 +1,29 @@ +-- CreateTable +CREATE TABLE "Team" ( + "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + "name" TEXT NOT NULL +); + +-- CreateTable +CREATE TABLE "Entry" ( + "id" TEXT NOT NULL PRIMARY KEY, + "type" TEXT NOT NULL, + "teamNumber" INTEGER NOT NULL, + "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + CONSTRAINT "Entry_teamNumber_fkey" FOREIGN KEY ("teamNumber") REFERENCES "Team" ("id") ON DELETE CASCADE ON UPDATE CASCADE +); + +-- CreateTable +CREATE TABLE "Image" ( + "id" TEXT NOT NULL PRIMARY KEY, + "uploadedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +-- CreateIndex +CREATE UNIQUE INDEX "Team_id_key" ON "Team"("id"); + +-- CreateIndex +CREATE UNIQUE INDEX "Entry_id_key" ON "Entry"("id"); + +-- CreateIndex +CREATE UNIQUE INDEX "Image_id_key" ON "Image"("id"); diff --git a/prisma/migrations/migration_lock.toml b/prisma/migrations/migration_lock.toml new file mode 100644 index 0000000..e5e5c47 --- /dev/null +++ b/prisma/migrations/migration_lock.toml @@ -0,0 +1,3 @@ +# Please do not edit this file manually +# It should be added in your version-control system (i.e. Git) +provider = "sqlite" \ No newline at end of file diff --git a/prisma/schema.prisma b/prisma/schema.prisma new file mode 100644 index 0000000..2845cec --- /dev/null +++ b/prisma/schema.prisma @@ -0,0 +1,31 @@ +generator client { + provider = "prisma-client-js" +} + +datasource db { + provider = "sqlite" + url = "file:./dev.db" +} + +model Team { + id Int @id @unique + name String + + entries Entry[] +} + +model Entry { + id String @id @unique @default(cuid()) + type String + + teamNumber Int + team Team @relation(fields: [teamNumber], references: [id], onUpdate: Cascade, onDelete: Cascade) + + createdAt DateTime @default(now()) +} + +model Image { + id String @id @unique @default(cuid()) + + uploadedAt DateTime @default(now()) +}