From 19b72f0ce5efd72d84d48e4b470ef885dcc307b6 Mon Sep 17 00:00:00 2001 From: Brady Sullivan Date: Wed, 27 Nov 2024 00:02:19 -0800 Subject: [PATCH] Add prisma --- api/.gitignore | 2 + api/package-lock.json | 90 +++++++++++++++++++ api/package.json | 2 + .../migration.sql | 11 +++ api/prisma/migrations/migration_lock.toml | 3 + api/prisma/schema.prisma | 20 +++++ docker-compose.yml | 22 +++++ 7 files changed, 150 insertions(+) create mode 100644 api/prisma/migrations/20241127080155_add_password_field/migration.sql create mode 100644 api/prisma/migrations/migration_lock.toml create mode 100644 api/prisma/schema.prisma create mode 100644 docker-compose.yml diff --git a/api/.gitignore b/api/.gitignore index 52962c25..cf143041 100644 --- a/api/.gitignore +++ b/api/.gitignore @@ -1,3 +1,5 @@ +.env + # Logs logs *.log diff --git a/api/package-lock.json b/api/package-lock.json index 3dce27f7..d2b94a63 100644 --- a/api/package-lock.json +++ b/api/package-lock.json @@ -12,6 +12,7 @@ "@aws-sdk/client-ec2": "^3.699.0", "@fastify/autoload": "^6.0.0", "@fastify/sensible": "^6.0.0", + "@prisma/client": "^5.22.0", "fastify": "^5.0.0", "fastify-cli": "^7.0.1", "fastify-plugin": "^5.0.0", @@ -23,6 +24,7 @@ "@types/jest": "^29.5.14", "@types/node": "^22.9.3", "jest": "^29.7.0", + "prisma": "^5.22.0", "ts-jest": "^29.2.5", "ts-node-dev": "^2.0.0", "typescript": "^5.7.2" @@ -1884,6 +1886,74 @@ "node": ">=8" } }, + "node_modules/@prisma/client": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-5.22.0.tgz", + "integrity": "sha512-M0SVXfyHnQREBKxCgyo7sffrKttwE6R8PMq330MIUF0pTwjUhLbW84pFDlf06B27XyCR++VtjugEnIHdr07SVA==", + "hasInstallScript": true, + "license": "Apache-2.0", + "engines": { + "node": ">=16.13" + }, + "peerDependencies": { + "prisma": "*" + }, + "peerDependenciesMeta": { + "prisma": { + "optional": true + } + } + }, + "node_modules/@prisma/debug": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-5.22.0.tgz", + "integrity": "sha512-AUt44v3YJeggO2ZU5BkXI7M4hu9BF2zzH2iF2V5pyXT/lRTyWiElZ7It+bRH1EshoMRxHgpYg4VB6rCM+mG5jQ==", + "devOptional": true, + "license": "Apache-2.0" + }, + "node_modules/@prisma/engines": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-5.22.0.tgz", + "integrity": "sha512-UNjfslWhAt06kVL3CjkuYpHAWSO6L4kDCVPegV6itt7nD1kSJavd3vhgAEhjglLJJKEdJ7oIqDJ+yHk6qO8gPA==", + "devOptional": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "5.22.0", + "@prisma/engines-version": "5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2", + "@prisma/fetch-engine": "5.22.0", + "@prisma/get-platform": "5.22.0" + } + }, + "node_modules/@prisma/engines-version": { + "version": "5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2.tgz", + "integrity": "sha512-2PTmxFR2yHW/eB3uqWtcgRcgAbG1rwG9ZriSvQw+nnb7c4uCr3RAcGMb6/zfE88SKlC1Nj2ziUvc96Z379mHgQ==", + "devOptional": true, + "license": "Apache-2.0" + }, + "node_modules/@prisma/fetch-engine": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-5.22.0.tgz", + "integrity": "sha512-bkrD/Mc2fSvkQBV5EpoFcZ87AvOgDxbG99488a5cexp5Ccny+UM6MAe/UFkUC0wLYD9+9befNOqGiIJhhq+HbA==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "5.22.0", + "@prisma/engines-version": "5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2", + "@prisma/get-platform": "5.22.0" + } + }, + "node_modules/@prisma/get-platform": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-5.22.0.tgz", + "integrity": "sha512-pHhpQdr1UPFpt+zFfnPazhulaZYCUqeIcPpJViYoq9R+D/yw4fjE+CtnsnKzPYm0ddUbeXUzjGVGIRVgPDCk4Q==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "5.22.0" + } + }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", @@ -5934,6 +6004,26 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/prisma": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-5.22.0.tgz", + "integrity": "sha512-vtpjW3XuYCSnMsNVBjLMNkTj6OZbudcPPTPYHqX0CJfpcdWciI1dM8uHETwmDxxiqEwCIE6WvXucWUetJgfu/A==", + "devOptional": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/engines": "5.22.0" + }, + "bin": { + "prisma": "build/index.js" + }, + "engines": { + "node": ">=16.13" + }, + "optionalDependencies": { + "fsevents": "2.3.3" + } + }, "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", diff --git a/api/package.json b/api/package.json index f23c76a9..7f4674ee 100644 --- a/api/package.json +++ b/api/package.json @@ -24,6 +24,7 @@ "@aws-sdk/client-ec2": "^3.699.0", "@fastify/autoload": "^6.0.0", "@fastify/sensible": "^6.0.0", + "@prisma/client": "^5.22.0", "fastify": "^5.0.0", "fastify-cli": "^7.0.1", "fastify-plugin": "^5.0.0", @@ -35,6 +36,7 @@ "@types/jest": "^29.5.14", "@types/node": "^22.9.3", "jest": "^29.7.0", + "prisma": "^5.22.0", "ts-jest": "^29.2.5", "ts-node-dev": "^2.0.0", "typescript": "^5.7.2" diff --git a/api/prisma/migrations/20241127080155_add_password_field/migration.sql b/api/prisma/migrations/20241127080155_add_password_field/migration.sql new file mode 100644 index 00000000..b6a8924a --- /dev/null +++ b/api/prisma/migrations/20241127080155_add_password_field/migration.sql @@ -0,0 +1,11 @@ +-- CreateTable +CREATE TABLE "User" ( + "id" SERIAL NOT NULL, + "email" TEXT NOT NULL, + "name" TEXT, + + CONSTRAINT "User_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "User_email_key" ON "User"("email"); diff --git a/api/prisma/migrations/migration_lock.toml b/api/prisma/migrations/migration_lock.toml new file mode 100644 index 00000000..fbffa92c --- /dev/null +++ b/api/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/api/prisma/schema.prisma b/api/prisma/schema.prisma new file mode 100644 index 00000000..9e1de113 --- /dev/null +++ b/api/prisma/schema.prisma @@ -0,0 +1,20 @@ +// 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" +} + +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} + +model User { + id Int @id @default(autoincrement()) + email String @unique + name String? +} \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..e9f7fe48 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,22 @@ +# docker-compose.yml + +services: + postgres: + image: postgres:14 + container_name: postgres + environment: + POSTGRES_USER: api_user + POSTGRES_PASSWORD: randompassword + POSTGRES_DB: agave + ports: + - '5432:5432' + volumes: + - postgres_data:/var/lib/postgresql/data + healthcheck: + test: ['CMD-SHELL', 'pg_isready -U api_user -d mydb'] + interval: 10s + timeout: 5s + retries: 5 + +volumes: + postgres_data: