import * as pgPromise from "pg-promise"; import {dbConfig} from "./db-config"; import debugCtor = require("debug"); const debug = debugCtor( "db", ); export const dbProviderCtor = (( /* istanbul ignore next */ function dbProviderCtorCtor() { return function dbProviderCtor(dbConfig) { let dbs: any; return { async execute() { if (!dbs) { const settings = await dbConfig(); const {databaseUrlRead, databaseUrlWrite, databaseUrlDelete} = settings; const pgPromiseOptions = { query: (e) => { debug( "QUERY: ", e.query, ); if (e.params) { debug( "PARAMS:", e.params, ); } }, }; dbs = { read: pgPromise(pgPromiseOptions)( databaseUrlRead, ), write: pgPromise(pgPromiseOptions)( databaseUrlWrite, ), delete: pgPromise(pgPromiseOptions)( databaseUrlDelete, ), }; } return dbs; }, dbConfig, }; }; })()); export const dbProvider = dbProviderCtor(dbConfig).execute;