UNPKG

@srsl/tools

Version:

JavaScript tools for common interfaces

42 lines (37 loc) 1.13 kB
const { Client } = require('pg') const { sleep } = require('../utils') const run = async ( attempts = Infinity, interval = 3000, onError = (e) => console.error('[Postgres] Connection Error', e), url = process.env.POSTGRES_URL, host = process.env.POSTGRES_HOST || '127.0.0.1', port = process.env.POSTGRES_PORT || 5432, database = process.env.POSTGRES_DATABASE || 'postgres', user = process.env.POSTGRES_USER || 'postgres', password = process.env.POSTGRES_PASSWORD || 'password', ssl = process.env.POSTGRES_SSL == 'true' || false, config = {}, ) => { try { console.log(`[Postgres] Connecting to postgres... postgresql://${user}:********${host}:${port}/${database}`) const client = new Client({ user, host, database, password, port, ssl, ...(config || {}), }) const pgInterface = await client.connect() console.log(`[Postgres] Connected to host ${host}`) return pgInterface } catch (e) { onError(e) await sleep(interval) if (attempts === 0) return onError() return run(attempts, interval, onError) } } module.exports = run