homeio
PublikFork dari doctor-io/homeio
postgres.ts
import "server-only";
import { Pool } from "pg";
import { serverEnv } from "@/lib/server/env";
import { logServerAction } from "@/lib/server/logging/logger";
declare global {
var __homeioPgPool: Pool | undefined;
var __homeioPgPoolErrorListenerAttached: boolean | undefined;
var __homeioPgPoolInitLogged: boolean | undefined;
}
export const pgPool =
globalThis.__homeioPgPool ??
new Pool({
connectionString: serverEnv.DATABASE_URL,
max: serverEnv.PG_MAX_CONNECTIONS,
min: 1,
idleTimeoutMillis: 60_000,
connectionTimeoutMillis: 2_000,
});
if (serverEnv.NODE_ENV !== "production") {
globalThis.__homeioPgPool = pgPool;
}
if (!globalThis.__homeioPgPoolErrorListenerAttached) {
pgPool.on("error", (error) => {
logServerAction({
level: "error",
layer: "db",
action: "pg.pool.error",
status: "error",
error,
});
});
globalThis.__homeioPgPoolErrorListenerAttached = true;
}
if (!globalThis.__homeioPgPoolInitLogged) {
logServerAction({
level: "info",
layer: "db",
action: "pg.pool.init",
status: "success",
meta: {
maxConnections: serverEnv.PG_MAX_CONNECTIONS,
},
});
globalThis.__homeioPgPoolInitLogged = true;
}