@srsl/tools
Version:
JavaScript tools for common interfaces
42 lines (37 loc) • 1.13 kB
JavaScript
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