lore-hook-models
Version:
A lore hook that creates models for AJAX communication
78 lines (60 loc) • 2.28 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
var _loreModels = require('lore-models');
var _generateProperties = require('./generateProperties');
var _generateProperties2 = _interopRequireDefault(_generateProperties);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function getConnectionName(config, modelName) {
var connection = config.defaultConnection;
var connectionModelMap = config.connectionModelMap;
_lodash2.default.mapKeys(connectionModelMap, function (models, connectionName) {
if (models.indexOf(modelName) >= 0) {
connection = connectionName;
}
});
return connection;
} /* eslint no-param-reassign: "off" */
exports.default = {
dependencies: ['connections'],
defaults: {
models: {
defaultConnection: 'default',
// apiRoot: 'https://api.example.com',
// pluralize: true,
// properties: {},
// endpoint: 'custom_non-model_name',
// models: {}
connectionModelMap: {
// default: [...model names...]
}
}
},
load: function load(lore) {
var models = lore.loader.loadModels();
var config = lore.config.models;
var connections = lore.connections;
lore.models = {};
_lodash2.default.mapKeys(models, function (module, moduleName) {
// todo: currently setting the modelName to the filename, but
// should change to be PascalCase, like lore.models.ModelName
var modelName = moduleName;
// get the connection for this model
var connection = connections[getConnectionName(config, modelName)];
// Cascaded series of defaults to define the models final properties
// 1. Start from anything the user defined in the collections's config
// 2. Add any missing application level settings from config.models
// 2. Add any missing settings from conventions
var properties = (0, _generateProperties2.default)(modelName, {
config: config,
connection: connection,
definition: module
});
lore.models[modelName] = _loreModels.Model.extend(properties);
});
}
};
module.exports = exports['default'];
;