UNPKG

waigo

Version:

Node.js ES6 framework for reactive, data-driven apps and APIs (Koa, RethinkDB)

60 lines (40 loc) 1.1 kB
"use strict"; const waigo = global.waigo, _ = waigo._, logger = waigo.load('support/logger').create('rethinkdb'), Q = waigo.load('support/promise'), Thinodium = require('thinodium'); // keep track of connections var _connections = {}; /** * Create a database connection. * * @param {Object} id Database id. * @param {Object} logger The app logger * @param {Object} dbConfig configuration * @param {String} dbConfig.poolConfig connection pool config * @param {String} dbConfig.name db name * * @return {Object} db connection. */ exports.create = function*(id, logger, dbConfig) { logger.info('Connecting to RethinkDB', id); let db = yield Thinodium.connect('rethinkdb', dbConfig.serverConfig); _connections[id] = db; return db; }; /** * Shutdown all database connections. * * @param {Object} logger The app logger */ exports.closeAll = function*(logger) { logger.info('Close all connections'); yield _.map(_connections, (db) => { return Q.try(() => { if (db.isConnected) { return db.disconnect() } }); }); };