fix production db

This commit is contained in:
root
2026-05-17 00:35:35 -04:00
parent 1294109c55
commit be98e3e65d
9 changed files with 150 additions and 0 deletions
+3
View File
@@ -1,5 +1,8 @@
import { PrismaClient } from '../generated'
import bcrypt from 'bcryptjs'
import { ensureDatabaseUrl } from '../src/runtime-config'
ensureDatabaseUrl()
const prisma = new PrismaClient()
+2
View File
@@ -3,6 +3,7 @@
const { spawnSync } = require('node:child_process')
const { readdirSync } = require('node:fs')
const path = require('node:path')
const { ensureDatabaseUrl } = require('../src/runtime-config')
const { PrismaClient } = require('../generated')
const repoRoot = path.resolve(__dirname, '../../..')
@@ -23,6 +24,7 @@ function run(command, args) {
}
async function main() {
ensureDatabaseUrl()
const prisma = new PrismaClient()
try {
+4
View File
@@ -1,5 +1,9 @@
const { ensureDatabaseUrl } = require('./runtime-config')
const { PrismaClient } = require('../generated')
ensureDatabaseUrl()
module.exports = {
PrismaClient,
ensureDatabaseUrl,
}
+5
View File
@@ -1,4 +1,9 @@
import { ensureDatabaseUrl } from './runtime-config'
ensureDatabaseUrl()
export { PrismaClient } from '../generated'
export { ensureDatabaseUrl } from './runtime-config'
export type AdminRole = 'SUPER_ADMIN' | 'ADMIN' | 'SUPPORT' | 'FINANCE' | 'VIEWER'
export type EmployeeRole = 'OWNER' | 'MANAGER' | 'AGENT'
+29
View File
@@ -0,0 +1,29 @@
const ENABLED_VALUES = new Set(['1', 'true', 'yes'])
function ensureDatabaseUrl(env = process.env) {
const shouldBuildFromPostgres = ENABLED_VALUES.has(
env.DATABASE_URL_FROM_POSTGRES?.trim().toLowerCase() ?? '',
)
if (!shouldBuildFromPostgres) {
return env.DATABASE_URL
}
if (!env.POSTGRES_PASSWORD) {
throw new Error('DATABASE_URL_FROM_POSTGRES is enabled but POSTGRES_PASSWORD is not set')
}
const user = env.POSTGRES_USER ?? 'postgres'
const password = env.POSTGRES_PASSWORD
const host = env.POSTGRES_HOST ?? 'postgres'
const port = env.POSTGRES_PORT ?? '5432'
const database = env.POSTGRES_DB ?? 'rentaldrivego'
env.DATABASE_URL = `postgresql://${encodeURIComponent(user)}:${encodeURIComponent(password)}@${host}:${port}/${encodeURIComponent(database)}`
return env.DATABASE_URL
}
module.exports = {
ensureDatabaseUrl,
}
+25
View File
@@ -0,0 +1,25 @@
const ENABLED_VALUES = new Set(['1', 'true', 'yes'])
export function ensureDatabaseUrl(env: NodeJS.ProcessEnv = process.env) {
const shouldBuildFromPostgres = ENABLED_VALUES.has(
env.DATABASE_URL_FROM_POSTGRES?.trim().toLowerCase() ?? '',
)
if (!shouldBuildFromPostgres) {
return env.DATABASE_URL
}
if (!env.POSTGRES_PASSWORD) {
throw new Error('DATABASE_URL_FROM_POSTGRES is enabled but POSTGRES_PASSWORD is not set')
}
const user = env.POSTGRES_USER ?? 'postgres'
const password = env.POSTGRES_PASSWORD
const host = env.POSTGRES_HOST ?? 'postgres'
const port = env.POSTGRES_PORT ?? '5432'
const database = env.POSTGRES_DB ?? 'rentaldrivego'
env.DATABASE_URL = `postgresql://${encodeURIComponent(user)}:${encodeURIComponent(password)}@${host}:${port}/${encodeURIComponent(database)}`
return env.DATABASE_URL
}