Abhises commited on
Commit
08caca4
·
1 Parent(s): 73efd26

added prisma to production

Browse files
docker-compose.yml ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ version: '3.8'
2
+
3
+ services:
4
+ postgres:
5
+ image: postgres:15-alpine
6
+ container_name: serp-postgres
7
+ ports:
8
+ - "5432:5432"
9
+ environment:
10
+ POSTGRES_USER: serpuser
11
+ POSTGRES_PASSWORD: serppassword
12
+ POSTGRES_DB: serpdb
13
+ volumes:
14
+ - pgdata:/var/lib/postgresql/data
15
+
16
+ volumes:
17
+ pgdata:
package-lock.json CHANGED
@@ -10,6 +10,7 @@
10
  "license": "ISC",
11
  "dependencies": {
12
  "@prisma/adapter-better-sqlite3": "^7.8.0",
 
13
  "@prisma/client": "^7.8.0",
14
  "bcryptjs": "^3.0.3",
15
  "better-sqlite3": "^12.10.0",
@@ -18,6 +19,7 @@
18
  "express": "^5.2.1",
19
  "express-validator": "^7.3.2",
20
  "jsonwebtoken": "^9.0.3",
 
21
  "prisma": "^7.8.0",
22
  "socket.io": "^4.8.3",
23
  "uuid": "^14.0.0"
@@ -125,6 +127,18 @@
125
  "better-sqlite3": "^12.6.0"
126
  }
127
  },
 
 
 
 
 
 
 
 
 
 
 
 
128
  "node_modules/@prisma/client": {
129
  "version": "7.8.0",
130
  "resolved": "https://registry.npmjs.org/@prisma/client/-/client-7.8.0.tgz",
@@ -508,6 +522,17 @@
508
  "undici-types": ">=7.24.0 <7.24.7"
509
  }
510
  },
 
 
 
 
 
 
 
 
 
 
 
511
  "node_modules/@types/react": {
512
  "version": "19.2.15",
513
  "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.15.tgz",
@@ -2278,6 +2303,104 @@
2278
  "integrity": "sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==",
2279
  "license": "MIT"
2280
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2281
  "node_modules/picomatch": {
2282
  "version": "2.3.2",
2283
  "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
@@ -2315,6 +2438,45 @@
2315
  "url": "https://github.com/sponsors/porsager"
2316
  }
2317
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2318
  "node_modules/prebuild-install": {
2319
  "version": "7.1.3",
2320
  "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz",
@@ -2943,6 +3105,15 @@
2943
  "node": ">= 0.6"
2944
  }
2945
  },
 
 
 
 
 
 
 
 
 
2946
  "node_modules/sqlstring": {
2947
  "version": "2.3.3",
2948
  "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz",
@@ -3281,6 +3452,15 @@
3281
  }
3282
  }
3283
  },
 
 
 
 
 
 
 
 
 
3284
  "node_modules/yn": {
3285
  "version": "3.1.1",
3286
  "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
 
10
  "license": "ISC",
11
  "dependencies": {
12
  "@prisma/adapter-better-sqlite3": "^7.8.0",
13
+ "@prisma/adapter-pg": "^7.8.0",
14
  "@prisma/client": "^7.8.0",
15
  "bcryptjs": "^3.0.3",
16
  "better-sqlite3": "^12.10.0",
 
19
  "express": "^5.2.1",
20
  "express-validator": "^7.3.2",
21
  "jsonwebtoken": "^9.0.3",
22
+ "pg": "^8.21.0",
23
  "prisma": "^7.8.0",
24
  "socket.io": "^4.8.3",
25
  "uuid": "^14.0.0"
 
127
  "better-sqlite3": "^12.6.0"
128
  }
129
  },
130
+ "node_modules/@prisma/adapter-pg": {
131
+ "version": "7.8.0",
132
+ "resolved": "https://registry.npmjs.org/@prisma/adapter-pg/-/adapter-pg-7.8.0.tgz",
133
+ "integrity": "sha512-ygb3UkerK3v8MDpXVgCISdRNDozpxh6+JVJgiIGbSr5KBgz10LLf5ejUskPGoXlsIjxsOu6nuy1JVQr2EKGSlg==",
134
+ "license": "Apache-2.0",
135
+ "dependencies": {
136
+ "@prisma/driver-adapter-utils": "7.8.0",
137
+ "@types/pg": "^8.16.0",
138
+ "pg": "^8.16.3",
139
+ "postgres-array": "3.0.4"
140
+ }
141
+ },
142
  "node_modules/@prisma/client": {
143
  "version": "7.8.0",
144
  "resolved": "https://registry.npmjs.org/@prisma/client/-/client-7.8.0.tgz",
 
522
  "undici-types": ">=7.24.0 <7.24.7"
523
  }
524
  },
525
+ "node_modules/@types/pg": {
526
+ "version": "8.20.0",
527
+ "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.20.0.tgz",
528
+ "integrity": "sha512-bEPFOaMAHTEP1EzpvHTbmwR8UsFyHSKsRisLIHVMXnpNefSbGA1bD6CVy+qKjGSqmZqNqBDV2azOBo8TgkcVow==",
529
+ "license": "MIT",
530
+ "dependencies": {
531
+ "@types/node": "*",
532
+ "pg-protocol": "*",
533
+ "pg-types": "^2.2.0"
534
+ }
535
+ },
536
  "node_modules/@types/react": {
537
  "version": "19.2.15",
538
  "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.15.tgz",
 
2303
  "integrity": "sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==",
2304
  "license": "MIT"
2305
  },
2306
+ "node_modules/pg": {
2307
+ "version": "8.21.0",
2308
+ "resolved": "https://registry.npmjs.org/pg/-/pg-8.21.0.tgz",
2309
+ "integrity": "sha512-AUP1EYJuHraQGsVoCQVIcM7TEJVGtDzxWtGFZd8rds9d+CCXlU5Js1rYgfLNvxy9iJrpHjGrRjoi/3BT9fRyiA==",
2310
+ "license": "MIT",
2311
+ "dependencies": {
2312
+ "pg-connection-string": "^2.13.0",
2313
+ "pg-pool": "^3.14.0",
2314
+ "pg-protocol": "^1.14.0",
2315
+ "pg-types": "2.2.0",
2316
+ "pgpass": "1.0.5"
2317
+ },
2318
+ "engines": {
2319
+ "node": ">= 16.0.0"
2320
+ },
2321
+ "optionalDependencies": {
2322
+ "pg-cloudflare": "^1.4.0"
2323
+ },
2324
+ "peerDependencies": {
2325
+ "pg-native": ">=3.0.1"
2326
+ },
2327
+ "peerDependenciesMeta": {
2328
+ "pg-native": {
2329
+ "optional": true
2330
+ }
2331
+ }
2332
+ },
2333
+ "node_modules/pg-cloudflare": {
2334
+ "version": "1.4.0",
2335
+ "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.4.0.tgz",
2336
+ "integrity": "sha512-Vo7z/6rrQYxpNRylp4Tlob2elzbh+N/MOQbxFVWCxS7oEx6jF53GTJFxK2WWpKuBRkmiin4Mt+xofFDjx09R0A==",
2337
+ "license": "MIT",
2338
+ "optional": true
2339
+ },
2340
+ "node_modules/pg-connection-string": {
2341
+ "version": "2.13.0",
2342
+ "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.13.0.tgz",
2343
+ "integrity": "sha512-EMnU9E2fSULdsbErBbMaXJvFeD9B4+nPcM3f+4lsiCR0BHLPrLVjv3DbyM2hgQQviKJaTWIRRTjKjWlHg3p2ig==",
2344
+ "license": "MIT"
2345
+ },
2346
+ "node_modules/pg-int8": {
2347
+ "version": "1.0.1",
2348
+ "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz",
2349
+ "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==",
2350
+ "license": "ISC",
2351
+ "engines": {
2352
+ "node": ">=4.0.0"
2353
+ }
2354
+ },
2355
+ "node_modules/pg-pool": {
2356
+ "version": "3.14.0",
2357
+ "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.14.0.tgz",
2358
+ "integrity": "sha512-gKtPkFdQPU3DksooVLi9LsjZxrsBUZIpa+7aVx+LV5pNh0KzP4Zleud2po+ConrxbuXGBJ6Hfer6hdgpIBpBaw==",
2359
+ "license": "MIT",
2360
+ "peerDependencies": {
2361
+ "pg": ">=8.0"
2362
+ }
2363
+ },
2364
+ "node_modules/pg-protocol": {
2365
+ "version": "1.14.0",
2366
+ "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.14.0.tgz",
2367
+ "integrity": "sha512-n5taZ1kO3s9ngDTVxsEznOqCyToTgz0FLuPq0B33COy5pPpuWJpY3/2oRBVETuOgzdqRXfWpM9HIhp2LBBT1BA==",
2368
+ "license": "MIT"
2369
+ },
2370
+ "node_modules/pg-types": {
2371
+ "version": "2.2.0",
2372
+ "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz",
2373
+ "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==",
2374
+ "license": "MIT",
2375
+ "dependencies": {
2376
+ "pg-int8": "1.0.1",
2377
+ "postgres-array": "~2.0.0",
2378
+ "postgres-bytea": "~1.0.0",
2379
+ "postgres-date": "~1.0.4",
2380
+ "postgres-interval": "^1.1.0"
2381
+ },
2382
+ "engines": {
2383
+ "node": ">=4"
2384
+ }
2385
+ },
2386
+ "node_modules/pg-types/node_modules/postgres-array": {
2387
+ "version": "2.0.0",
2388
+ "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz",
2389
+ "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==",
2390
+ "license": "MIT",
2391
+ "engines": {
2392
+ "node": ">=4"
2393
+ }
2394
+ },
2395
+ "node_modules/pgpass": {
2396
+ "version": "1.0.5",
2397
+ "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz",
2398
+ "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==",
2399
+ "license": "MIT",
2400
+ "dependencies": {
2401
+ "split2": "^4.1.0"
2402
+ }
2403
+ },
2404
  "node_modules/picomatch": {
2405
  "version": "2.3.2",
2406
  "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
 
2438
  "url": "https://github.com/sponsors/porsager"
2439
  }
2440
  },
2441
+ "node_modules/postgres-array": {
2442
+ "version": "3.0.4",
2443
+ "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-3.0.4.tgz",
2444
+ "integrity": "sha512-nAUSGfSDGOaOAEGwqsRY27GPOea7CNipJPOA7lPbdEpx5Kg3qzdP0AaWC5MlhTWV9s4hFX39nomVZ+C4tnGOJQ==",
2445
+ "license": "MIT",
2446
+ "engines": {
2447
+ "node": ">=12"
2448
+ }
2449
+ },
2450
+ "node_modules/postgres-bytea": {
2451
+ "version": "1.0.1",
2452
+ "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.1.tgz",
2453
+ "integrity": "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==",
2454
+ "license": "MIT",
2455
+ "engines": {
2456
+ "node": ">=0.10.0"
2457
+ }
2458
+ },
2459
+ "node_modules/postgres-date": {
2460
+ "version": "1.0.7",
2461
+ "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz",
2462
+ "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==",
2463
+ "license": "MIT",
2464
+ "engines": {
2465
+ "node": ">=0.10.0"
2466
+ }
2467
+ },
2468
+ "node_modules/postgres-interval": {
2469
+ "version": "1.2.0",
2470
+ "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz",
2471
+ "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==",
2472
+ "license": "MIT",
2473
+ "dependencies": {
2474
+ "xtend": "^4.0.0"
2475
+ },
2476
+ "engines": {
2477
+ "node": ">=0.10.0"
2478
+ }
2479
+ },
2480
  "node_modules/prebuild-install": {
2481
  "version": "7.1.3",
2482
  "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz",
 
3105
  "node": ">= 0.6"
3106
  }
3107
  },
3108
+ "node_modules/split2": {
3109
+ "version": "4.2.0",
3110
+ "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
3111
+ "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
3112
+ "license": "ISC",
3113
+ "engines": {
3114
+ "node": ">= 10.x"
3115
+ }
3116
+ },
3117
  "node_modules/sqlstring": {
3118
  "version": "2.3.3",
3119
  "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz",
 
3452
  }
3453
  }
3454
  },
3455
+ "node_modules/xtend": {
3456
+ "version": "4.0.2",
3457
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
3458
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
3459
+ "license": "MIT",
3460
+ "engines": {
3461
+ "node": ">=0.4"
3462
+ }
3463
+ },
3464
  "node_modules/yn": {
3465
  "version": "3.1.1",
3466
  "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
package.json CHANGED
@@ -16,6 +16,7 @@
16
  "license": "ISC",
17
  "dependencies": {
18
  "@prisma/adapter-better-sqlite3": "^7.8.0",
 
19
  "@prisma/client": "^7.8.0",
20
  "bcryptjs": "^3.0.3",
21
  "better-sqlite3": "^12.10.0",
@@ -24,6 +25,7 @@
24
  "express": "^5.2.1",
25
  "express-validator": "^7.3.2",
26
  "jsonwebtoken": "^9.0.3",
 
27
  "prisma": "^7.8.0",
28
  "socket.io": "^4.8.3",
29
  "uuid": "^14.0.0"
 
16
  "license": "ISC",
17
  "dependencies": {
18
  "@prisma/adapter-better-sqlite3": "^7.8.0",
19
+ "@prisma/adapter-pg": "^7.8.0",
20
  "@prisma/client": "^7.8.0",
21
  "bcryptjs": "^3.0.3",
22
  "better-sqlite3": "^12.10.0",
 
25
  "express": "^5.2.1",
26
  "express-validator": "^7.3.2",
27
  "jsonwebtoken": "^9.0.3",
28
+ "pg": "^8.21.0",
29
  "prisma": "^7.8.0",
30
  "socket.io": "^4.8.3",
31
  "uuid": "^14.0.0"
prisma.config.ts CHANGED
@@ -1,6 +1,10 @@
 
1
  import "dotenv/config";
2
  import { defineConfig } from "prisma/config";
3
- import path from "path";
 
 
 
4
 
5
  export default defineConfig({
6
  schema: "prisma/schema.prisma",
@@ -8,6 +12,6 @@ export default defineConfig({
8
  path: "prisma/migrations",
9
  },
10
  datasource: {
11
- url: process.env["DATABASE_URL"] ?? `file:${path.resolve("prisma/dev.db")}`,
12
  },
13
  });
 
1
+ /// <reference types="node" />
2
  import "dotenv/config";
3
  import { defineConfig } from "prisma/config";
4
+
5
+ const databaseUrl = process.env.NODE_ENV === "production"
6
+ ? process.env.DATABASE_URL_PROD
7
+ : process.env.DATABASE_URL_DEV;
8
 
9
  export default defineConfig({
10
  schema: "prisma/schema.prisma",
 
12
  path: "prisma/migrations",
13
  },
14
  datasource: {
15
+ url: databaseUrl,
16
  },
17
  });
prisma/schema.prisma CHANGED
@@ -3,7 +3,7 @@ generator client {
3
  }
4
 
5
  datasource db {
6
- provider = "sqlite"
7
  }
8
 
9
  model User {
 
3
  }
4
 
5
  datasource db {
6
+ provider = "postgresql"
7
  }
8
 
9
  model User {
src/lib/prisma.js CHANGED
@@ -1,11 +1,14 @@
1
  require('dotenv').config();
2
  const { PrismaClient } = require('@prisma/client');
3
- const { PrismaBetterSqlite3 } = require('@prisma/adapter-better-sqlite3');
4
- const path = require('path');
5
 
6
- const url = process.env.DATABASE_URL || `file:${path.resolve(__dirname, '../../prisma/dev.db')}`;
 
 
7
 
8
- const adapter = new PrismaBetterSqlite3({ url });
 
9
 
10
  const prisma = new PrismaClient({ adapter });
11
 
 
1
  require('dotenv').config();
2
  const { PrismaClient } = require('@prisma/client');
3
+ const { PrismaPg } = require('@prisma/adapter-pg');
4
+ const { Pool } = require('pg');
5
 
6
+ const connectionString = process.env.NODE_ENV === "production"
7
+ ? process.env.DATABASE_URL_PROD
8
+ : process.env.DATABASE_URL_DEV;
9
 
10
+ const pool = new Pool({ connectionString });
11
+ const adapter = new PrismaPg(pool);
12
 
13
  const prisma = new PrismaClient({ adapter });
14