hapijs-node-postgres
Version:
Hapijs plugin for using postgres
53 lines (37 loc) • 1.08 kB
JavaScript
;
const Hoek = require('hoek');
const { Pool } = require('pg');
const DEFAULTS = {
connectionString: process.env.POSTGRES_URL,
attach: 'onPreHandler',
detach: 'tail'
};
exports.register = function (server, options, next) {
const config = Hoek.applyToDefaults(DEFAULTS, options);
const pgClient = new Pool(config.connectionString);
server.expose('connect', pgClient.connect.bind(null, config.connectionString));
server.ext(config.attach, (request, reply) => {
pgClient.connect(config.connectionString, (err, client, done) => {
if (err) {
reply(err);
return;
}
request.pg = {
client,
done,
kill: false
};
reply.continue();
});
});
server.on(config.detach, (request, err) => {
if (request.pg) {
request.pg.done();
}
pgClient.done();
});
next();
};
exports.register.attributes = {
pkg: require('./package.json')
};