UNPKG

orm

Version:

NodeJS Object-relational mapping

116 lines (97 loc) 2.4 kB
var _ = require('lodash'); var default_settings = { properties : { primary_key : "id", association_key : "{name}_{field}", required : false }, instance : { identityCache : false, identityCacheSaveCheck : true, autoSave : false, autoFetch : false, autoFetchLimit : 1, cascadeRemove : true, returnAllErrors : false, saveAssociationsByDefault : true }, hasMany : { // Makes the foreign key fields a composite key key : false }, connection : { reconnect : true, pool : false, debug : false }, promiseFunctionPostfix : 'Async' }; exports.Container = Settings; exports.defaults = function () { return default_settings; }; function Settings(settings) { this.settings = settings; return { set: function (key, value) { set(key, value, settings); return this; }, get: function (key, def) { var v = get(key, def, settings) if (v instanceof Function) { return v; } else { return _.cloneDeep(v); } }, unset: function () { for (var i = 0; i < arguments.length; i++) { if (typeof arguments[i] === "string") { unset(arguments[i], settings); } } return this; } }; } function set(key, value, obj) { var p = key.indexOf("."); if (p === -1) { return obj[key] = value; } if (!obj.hasOwnProperty(key.substr(0, p))) { obj[key.substr(0, p)] = {}; } return set(key.substr(p + 1), value, obj[key.substr(0, p)]); } function get(key, def, obj) { var p = key.indexOf("."); if (p === -1) { if (key === '*') { return obj; } return obj.hasOwnProperty(key) ? obj[key] : def; } if (!obj.hasOwnProperty(key.substr(0, p))) { return def; } return get(key.substr(p + 1), def, obj[key.substr(0, p)]); } function unset(key, obj) { var p = key.indexOf("."); if (p === -1) { if (key === '*') { return 'reset'; } else { delete obj[key]; } return; } if (!obj.hasOwnProperty(key.substr(0, p))) { return; } if (unset(key.substr(p + 1), obj[key.substr(0, p)]) === 'reset') { obj[key.substr(0, p)] = {}; } }