@opengis/fastify-table
Version:
core-plugins
46 lines (45 loc) • 1.97 kB
JavaScript
import pool from "./pool.js";
import init from "./init.js";
import config from "../../../../config.js";
import dblist from "../../../../dblist.js";
import pgClients from "../pgClients.js";
import getDBParams from "./getDBParams.js";
function getPG(param = {}) {
// console.log("config.pg", config.pg, process.env); // ! process.env.VITEST always in uppercase, debug to properly test via npx vitest run
if (!config.pg)
return null;
const dbListParams = dblist.find((el) => el.key === param?.key) ||
dblist.find((el) => el.database === (param?.db || param?.database || param) &&
el.port === param?.port);
const { user, password, host, port, db, database, name: origin, statement_timeout: timeout, // explicit
connectionTimeoutMillis: connectionTimeout, } = dbListParams ??
(typeof param === "string" ? getDBParams(param) : param || {});
const name = origin ||
db ||
database ||
(typeof param === "string" ? param : null) ||
"client";
if (pgClients[name])
return pgClients[name];
const dbConfig = {
user: user || config.pg?.user || "postgres",
password: password || config.pg?.password || "postgres",
host: host || config.pg?.host,
port: port || config.pg?.port,
database: db || database || config.pg?.db || config.pg?.database,
statement_timeout: timeout || config.pg?.statement_timeout || 10000,
connectionTimeoutMillis: connectionTimeout || config.pg?.connectionTimeoutMillis || 5000,
};
if (!dbConfig.database) {
return null;
}
pgClients[name] = pool(dbConfig);
pgClients[name].init = () => init(pgClients[name]); // for compatibility
// force init
init(pgClients[name]).catch((err) => console.warn("⚠️ pg client init error", host, port, dbConfig.database));
return pgClients[name];
}
if (config.pg) {
getPG({ name: "client" });
}
export default getPG;