Files
i-want-to-heal-2/server/db.mjs
T

33 lines
758 B
JavaScript

import pg from 'pg'
const { Pool } = pg
export function getDatabaseUrl() {
const databaseUrl = process.env.DATABASE_URL
if (!databaseUrl) {
throw new Error('DATABASE_URL is required for server database access.')
}
return databaseUrl
}
export function createPool() {
return new Pool({
connectionString: getDatabaseUrl(),
max: Number(process.env.DB_POOL_MAX ?? 10),
})
}
export async function waitForDatabase(pool, attempts = 30) {
let lastError
for (let attempt = 1; attempt <= attempts; attempt += 1) {
try {
await pool.query('select 1')
return
} catch (error) {
lastError = error
await new Promise((resolve) => setTimeout(resolve, Math.min(5000, attempt * 500)))
}
}
throw lastError
}