← back to Nineoh Guide
apps/web/lib/db.ts
29 lines
import { Pool } from "pg";
/**
* Single shared pg Pool. In dev we connect to the local Postgres socket; in
* production DATABASE_URL points at Neon/Vercel Postgres. Cached on globalThis
* so Next's hot-reload doesn't open a new pool per request.
*/
const globalForDb = globalThis as unknown as { _pgPool?: Pool };
export const pool =
globalForDb._pgPool ??
new Pool({
connectionString:
process.env.DATABASE_URL ??
"postgresql://localhost/nineoh_guide?host=/tmp",
max: 5,
});
if (process.env.NODE_ENV !== "production") globalForDb._pgPool = pool;
export async function dbOk(): Promise<boolean> {
try {
const { rows } = await pool.query("select 1 as ok");
return rows[0]?.ok === 1;
} catch {
return false;
}
}