regard
Version:
Sugar-interface to access multiple data sources.
60 lines (43 loc) • 1.24 kB
JavaScript
var _ = require('lodash'),
AbstractManager = require('./abstract');
exports = module.exports = ConnectorsManager;
function ConnectorsManager() {
if (!(this instanceof ConnectorsManager)) {
return new ConnectorsManager();
}
AbstractManager.call(this);
}
ConnectorsManager.prototype = _.create(AbstractManager.prototype);
ConnectorsManager.prototype.core = function (name) {
var connector,
path = '../connectors/'+name;
try {
connector = require(path);
} catch (err) {
if (err.code !== 'MODULE_NOT_FOUND' || err.message.indexOf("Cannot find module '"+path+"'") === -1) {
throw err;
}
}
return connector;
};
ConnectorsManager.prototype.resolve = function (endpoint) {
var connector = endpoint.connector,
parent = endpoint.parent;
if (_.isUndefined(connector) && _.isObject(parent)) {
connector = parent.connector;
}
if (_.isString(connector)) {
connector = this.get(connector);
}
if (_.isUndefined(connector)) {
connector = _.find(this.data,
function (value) {
return _.isFunction(value.checkPath) && value.checkPath(endpoint.path);
}
);
}
if (!_.isObject(connector)) {
connector = undefined;
}
return connector;
};