UNPKG

brest-maria

Version:
61 lines (55 loc) 1.68 kB
var DB = require('./lib/db'); var _ = require('lodash'); /** * * @param tableName * @returns Table * @constructor */ var BrestMaria = function(tableName) { if (tableName) return BrestMaria.db.table(tableName); else return BrestMaria.db.table; }; /** * Return closure for direct method call * @param tableName * @param methodName * @returns {Function} */ var tableMethod = function(tableName, methodName){ return function(){ if (BrestMaria.db.table && BrestMaria.db.table(tableName) && BrestMaria.db.table(tableName)[methodName]){ BrestMaria.db.table(tableName)[methodName].apply(BrestMaria.db.table(tableName), arguments); } else { throw "Failed to call method \""+methodName+"\" for table \""+tableName+"\""; } } }; /** * Augment controller with * @param {String} tableName * @param {Object} controller * @returns {Object} */ BrestMaria.controller = function(tableName, controller){ var defaults = {}; ['row','list','insert','update','del'].forEach(function(m){defaults[m] = tableMethod(tableName, m)}); return _.defaults(controller, defaults); }; /** * Init BrestMaria with brest instance * @param {Brest} brest * @param {Function} callback */ BrestMaria.init = function(brest, callback) { BrestMaria.db = new DB(brest.getSetting('maria')); brest.db = BrestMaria.db; BrestMaria.db.on('error', function(err) {callback(err)}); BrestMaria.db.on('ready', callback); }; BrestMaria.filters = { limit: "Limit the request <%from%>,<%count%>", order: "Sort by the fields" }; module.exports = BrestMaria;