fosrl.pangolin/server/db/pg/driver.ts
2025-06-13 13:04:44 -04:00

33 lines
970 B
TypeScript

import { drizzle as DrizzlePostgres } from "drizzle-orm/node-postgres";
import { readConfigFile } from "@server/lib/readConfigFile";
import { withReplicas } from "drizzle-orm/pg-core";
function createDb() {
const config = readConfigFile();
const connectionString = config.postgres?.connection_string;
const replicaConnections = config.postgres?.replicas || [];
if (!connectionString) {
throw new Error(
"A primary db connection string is required in the configuration file."
);
}
const primary = DrizzlePostgres(connectionString);
const replicas = [];
if (!replicaConnections.length) {
replicas.push(primary);
} else {
for (const conn of replicaConnections) {
const replica = DrizzlePostgres(conn.connection_string);
replicas.push(replica);
}
}
return withReplicas(primary, replicas as any);
}
export const db = createDb();
export default db;