UNPKG

ddl-manager

Version:

store postgres procedures and triggers in files

60 lines (51 loc) 1.3 kB
import pg from "pg"; import _ from "lodash"; export interface IDBConfig { database?: string; user?: string; password?: string; host?: string; port?: number; unfreeze?: boolean; } const defaultConfig: IDBConfig = { database: undefined, user: undefined, password: undefined, host: "localhost", port: 5432, unfreeze: false }; export async function getDbClient(dbConfig: IDBConfig | pg.Pool) { if ( "query" in dbConfig ) { return dbConfig; } const config = parseDbConfig(dbConfig); const DAY = 24 * 60 * 60 * 1000; const pool = new pg.Pool({ max: 100, ...config, idleTimeoutMillis: DAY, connectionTimeoutMillis: DAY }); return pool; } function parseDbConfig(inputConfig: IDBConfig) { const config = _.clone(defaultConfig); if ( "database" in inputConfig ) { config.database = inputConfig.database; } if ( "user" in inputConfig ) { config.user = inputConfig.user; } if ( "password" in inputConfig ) { config.password = inputConfig.password; } if ( "host" in inputConfig ) { config.host = inputConfig.host; } if ( "port" in inputConfig ) { config.port = inputConfig.port; } return config; }