@opengis/fastify-table
Version:
core-plugins
43 lines (35 loc) • 1.48 kB
JavaScript
import pg from 'pg';
const { types } = pg;
types.setTypeParser(1082, (stringValue) => stringValue);
types.setTypeParser(1114, (stringValue) => stringValue);
import config from '../../../../config.js';
import dblist from '../../../../dblist.js';
import pgClients from '../pgClients.js';
import init from './init.js';
import getDBParams from './getDBParams.js';
function getPG(param) {
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,
} = dbListParams ?? (typeof param === 'string' ? getDBParams(param) : param || {});
const name = origin || db || database || param || '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: config.pg?.statement_timeout || 10000,
};
if (!dbConfig.database) { return null; }
pgClients[name] = new pg.Pool(dbConfig);
pgClients[name].init = async () => {
await init(pgClients[name]);
};
init(pgClients[name]);
return pgClients[name];
}
export default getPG;