diff --git a/packages/api/.gitignore b/packages/api/.gitignore index 9ab870d..386e37f 100644 --- a/packages/api/.gitignore +++ b/packages/api/.gitignore @@ -1 +1,5 @@ generated/ + +/prisma/src/generated/prisma + +.env diff --git a/packages/api/package.json b/packages/api/package.json index 8102043..8083d4e 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -24,6 +24,7 @@ "@prisma/client": "^7.0.1", "@tsoa/runtime": "^6.6.0", "connect-pg-simple": "^10.0.0", + "dotenv": "^17.2.3", "express": "^5.1.0", "express-session": "^1.18.2", "keycloak-connect": "^26.1.1", diff --git a/packages/api/prisma.config.ts b/packages/api/prisma.config.ts new file mode 100644 index 0000000..29a8190 --- /dev/null +++ b/packages/api/prisma.config.ts @@ -0,0 +1,14 @@ +// This file was generated by Prisma and assumes you have installed the following: +// npm install --save-dev prisma dotenv +import "dotenv/config"; +import { defineConfig, env } from "prisma/config"; + +export default defineConfig({ + schema: "prisma/schema.prisma", + migrations: { + path: "prisma/migrations", + }, + datasource: { + url: env("DATABASE_URL"), + }, +}); diff --git a/packages/api/prisma/schema.prisma b/packages/api/prisma/schema.prisma new file mode 100644 index 0000000..834e456 --- /dev/null +++ b/packages/api/prisma/schema.prisma @@ -0,0 +1,13 @@ +generator client { + provider = "prisma-client" + output = "../src/generated/prisma" +} + +datasource db { + provider = "postgresql" +} + +model test { + id String @id @db.Uuid + text String? @db.VarChar +} diff --git a/packages/api/src/infrastructure/database.ts b/packages/api/src/infrastructure/database.ts index 599228f..139597f 100644 --- a/packages/api/src/infrastructure/database.ts +++ b/packages/api/src/infrastructure/database.ts @@ -1,16 +1,2 @@ -import { Pool } from "pg"; -const dbUser = process.env["TKD_DB_USER"]; -const dbPassword = process.env["TKD_DB_PASSWORD"]; -if (dbUser === undefined || dbPassword === undefined) { - throw new Error("missing db configuration (user/password)"); -} - -export const DB_POOL = new Pool({ - user: dbUser, - password: dbPassword, - host: "localhost", - port: 5432, - database: "taekwondo", -}); diff --git a/packages/api/src/infrastructure/session.ts b/packages/api/src/infrastructure/session.ts index ea9bbbb..993ed2f 100644 --- a/packages/api/src/infrastructure/session.ts +++ b/packages/api/src/infrastructure/session.ts @@ -1,7 +1,22 @@ import pgSession from "connect-pg-simple"; import { type RequestHandler } from "express"; import session from "express-session"; -import { DB_POOL } from "./database.js"; +import { Pool } from "pg"; + +const dbUser = process.env["TKD_DB_USER"]; +const dbPassword = process.env["TKD_DB_PASSWORD"]; + +if (dbUser === undefined || dbPassword === undefined) { + throw new Error("missing db configuration (user/password)"); +} + +const DB_POOL = new Pool({ + user: dbUser, + password: dbPassword, + host: "localhost", + port: 5432, + database: "taekwondo", +}); const cookieSecret = process.env["TKD_COOKIE_SECRET"]; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ef3c1e8..01b2283 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -29,6 +29,9 @@ importers: connect-pg-simple: specifier: ^10.0.0 version: 10.0.0 + dotenv: + specifier: ^17.2.3 + version: 17.2.3 express: specifier: ^5.1.0 version: 5.1.0 @@ -2005,6 +2008,10 @@ packages: resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} engines: {node: '>=12'} + dotenv@17.2.3: + resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==} + engines: {node: '>=12'} + dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} @@ -5923,6 +5930,8 @@ snapshots: dotenv@16.6.1: {} + dotenv@17.2.3: {} + dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.2