From 231a25a6d7d41f05c2a00395ebdb5ea542f8a777 Mon Sep 17 00:00:00 2001 From: rakshithj Date: Wed, 22 May 2024 17:03:13 +0530 Subject: [PATCH] prisma added --- package.json | 3 + pnpm-lock.yaml | 90 +++++++++++++++++++ .../20240522112952_init/migration.sql | 34 +++++++ prisma/migrations/migration_lock.toml | 3 + prisma/schema.prisma | 27 ++++++ src/lib/prisma.ts | 5 ++ 6 files changed, 162 insertions(+) create mode 100644 prisma/migrations/20240522112952_init/migration.sql create mode 100644 prisma/migrations/migration_lock.toml create mode 100644 prisma/schema.prisma create mode 100644 src/lib/prisma.ts diff --git a/package.json b/package.json index 1d1945b..a6eadbd 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "lint": "next lint" }, "dependencies": { + "@prisma/client": "^5.14.0", "@radix-ui/react-accordion": "^1.1.2", "@radix-ui/react-dialog": "^1.0.5", "@radix-ui/react-label": "^2.0.2", @@ -20,6 +21,7 @@ "clsx": "^2.1.1", "lucide-react": "^0.378.0", "next": "14.2.3", + "prisma": "^5.14.0", "react": "^18", "react-dom": "^18", "react-social-media-embed": "^2.5.13", @@ -32,6 +34,7 @@ "@types/node": "^20", "@types/react": "^18", "@types/react-dom": "^18", + "dotenv-cli": "^7.4.2", "eslint": "^8", "eslint-config-next": "14.2.3", "postcss": "^8", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ae5a921..a4e6694 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,9 @@ importers: .: dependencies: + '@prisma/client': + specifier: ^5.14.0 + version: 5.14.0(prisma@5.14.0) '@radix-ui/react-accordion': specifier: ^1.1.2 version: 1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -41,6 +44,9 @@ importers: next: specifier: 14.2.3 version: 14.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + prisma: + specifier: ^5.14.0 + version: 5.14.0 react: specifier: ^18 version: 18.3.1 @@ -72,6 +78,9 @@ importers: '@types/react-dom': specifier: ^18 version: 18.3.0 + dotenv-cli: + specifier: ^7.4.2 + version: 7.4.2 eslint: specifier: ^8 version: 8.57.0 @@ -243,6 +252,30 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} + '@prisma/client@5.14.0': + resolution: {integrity: sha512-akMSuyvLKeoU4LeyBAUdThP/uhVP3GuLygFE3MlYzaCb3/J8SfsYBE5PkaFuLuVpLyA6sFoW+16z/aPhNAESqg==} + engines: {node: '>=16.13'} + peerDependencies: + prisma: '*' + peerDependenciesMeta: + prisma: + optional: true + + '@prisma/debug@5.14.0': + resolution: {integrity: sha512-iq56qBZuFfX3fCxoxT8gBX33lQzomBU0qIUaEj1RebsKVz1ob/BVH1XSBwwwvRVtZEV1b7Fxx2eVu34Ge/mg3w==} + + '@prisma/engines-version@5.14.0-25.e9771e62de70f79a5e1c604a2d7c8e2a0a874b48': + resolution: {integrity: sha512-ip6pNkRo1UxWv+6toxNcYvItNYaqQjXdFNGJ+Nuk2eYtRoEdoF13wxo7/jsClJFFenMPVNVqXQDV0oveXnR1cA==} + + '@prisma/engines@5.14.0': + resolution: {integrity: sha512-lgxkKZ6IEygVcw6IZZUlPIfLQ9hjSYAtHjZ5r64sCLDgVzsPFCi2XBBJgzPMkOQ5RHzUD4E/dVdpn9+ez8tk1A==} + + '@prisma/fetch-engine@5.14.0': + resolution: {integrity: sha512-VrheA9y9DMURK5vu8OJoOgQpxOhas3qF0IBHJ8G/0X44k82kc8E0w98HCn2nhnbOOMwbWsJWXfLC2/F8n5u0gQ==} + + '@prisma/get-platform@5.14.0': + resolution: {integrity: sha512-/yAyBvcEjRv41ynZrhdrPtHgk47xLRRq/o5eWGcUpBJ1YrUZTYB8EoPiopnP7iQrMATK8stXQdPOoVlrzuTQZw==} + '@radix-ui/primitive@1.0.1': resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} @@ -934,6 +967,18 @@ packages: domutils@3.1.0: resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + dotenv-cli@7.4.2: + resolution: {integrity: sha512-SbUj8l61zIbzyhIbg0FwPJq6+wjbzdn9oEtozQpZ6kW2ihCcapKVZj49oCT3oPM+mgQm+itgvUQcG5szxVrZTA==} + hasBin: true + + dotenv-expand@10.0.0: + resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} + engines: {node: '>=12'} + + dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} + eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -1711,6 +1756,11 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} + prisma@5.14.0: + resolution: {integrity: sha512-gCNZco7y5XtjrnQYeDJTiVZmT/ncqCr5RY1/Cf8X2wgLRmyh9ayPAGBNziI4qEE4S6SxCH5omQLVo9lmURaJ/Q==} + engines: {node: '>=16.13'} + hasBin: true + prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} @@ -2280,6 +2330,31 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true + '@prisma/client@5.14.0(prisma@5.14.0)': + optionalDependencies: + prisma: 5.14.0 + + '@prisma/debug@5.14.0': {} + + '@prisma/engines-version@5.14.0-25.e9771e62de70f79a5e1c604a2d7c8e2a0a874b48': {} + + '@prisma/engines@5.14.0': + dependencies: + '@prisma/debug': 5.14.0 + '@prisma/engines-version': 5.14.0-25.e9771e62de70f79a5e1c604a2d7c8e2a0a874b48 + '@prisma/fetch-engine': 5.14.0 + '@prisma/get-platform': 5.14.0 + + '@prisma/fetch-engine@5.14.0': + dependencies: + '@prisma/debug': 5.14.0 + '@prisma/engines-version': 5.14.0-25.e9771e62de70f79a5e1c604a2d7c8e2a0a874b48 + '@prisma/get-platform': 5.14.0 + + '@prisma/get-platform@5.14.0': + dependencies: + '@prisma/debug': 5.14.0 + '@radix-ui/primitive@1.0.1': dependencies: '@babel/runtime': 7.24.5 @@ -3016,6 +3091,17 @@ snapshots: domelementtype: 2.3.0 domhandler: 5.0.3 + dotenv-cli@7.4.2: + dependencies: + cross-spawn: 7.0.3 + dotenv: 16.4.5 + dotenv-expand: 10.0.0 + minimist: 1.2.8 + + dotenv-expand@10.0.0: {} + + dotenv@16.4.5: {} + eastasianwidth@0.2.0: {} editorconfig@1.0.4: @@ -3945,6 +4031,10 @@ snapshots: prelude-ls@1.2.1: {} + prisma@5.14.0: + dependencies: + '@prisma/engines': 5.14.0 + prop-types@15.8.1: dependencies: loose-envify: 1.4.0 diff --git a/prisma/migrations/20240522112952_init/migration.sql b/prisma/migrations/20240522112952_init/migration.sql new file mode 100644 index 0000000..441b7ff --- /dev/null +++ b/prisma/migrations/20240522112952_init/migration.sql @@ -0,0 +1,34 @@ +-- CreateTable +CREATE TABLE "Location" ( + "id" SERIAL NOT NULL, + "metadata" JSONB NOT NULL, + "location" TEXT NOT NULL, + "location_id" INTEGER NOT NULL, + "courses" JSONB NOT NULL, + + CONSTRAINT "Location_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "User" ( + "id" SERIAL NOT NULL, + "user_name" TEXT NOT NULL, + "user_id" INTEGER NOT NULL, + "role" TEXT NOT NULL, + "email" TEXT NOT NULL, + "location_id" INTEGER NOT NULL, + + CONSTRAINT "User_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "Location_location_id_key" ON "Location"("location_id"); + +-- CreateIndex +CREATE UNIQUE INDEX "User_user_id_key" ON "User"("user_id"); + +-- CreateIndex +CREATE UNIQUE INDEX "User_email_key" ON "User"("email"); + +-- AddForeignKey +ALTER TABLE "User" ADD CONSTRAINT "User_location_id_fkey" FOREIGN KEY ("location_id") REFERENCES "Location"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/prisma/migrations/migration_lock.toml b/prisma/migrations/migration_lock.toml new file mode 100644 index 0000000..fbffa92 --- /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 = "postgresql" \ No newline at end of file diff --git a/prisma/schema.prisma b/prisma/schema.prisma new file mode 100644 index 0000000..59bdf2d --- /dev/null +++ b/prisma/schema.prisma @@ -0,0 +1,27 @@ +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} + +generator client { + provider = "prisma-client-js" +} + +model Location { + id Int @id @default(autoincrement()) + metadata Json + location String + location_id Int @unique + courses Json + users User[] @relation("LocationUsers") +} + +model User { + id Int @id @default(autoincrement()) + user_name String + user_id Int @unique + role String + email String @unique + location_id Int + location Location @relation(fields: [location_id], references: [id], name: "LocationUsers") +} \ No newline at end of file diff --git a/src/lib/prisma.ts b/src/lib/prisma.ts new file mode 100644 index 0000000..b904402 --- /dev/null +++ b/src/lib/prisma.ts @@ -0,0 +1,5 @@ +import { PrismaClient } from '@prisma/client'; + +const prisma = new PrismaClient(); + +export default prisma; \ No newline at end of file