UNPKG

lore-hook-models

Version:

A lore hook that creates models for AJAX communication

78 lines (60 loc) 2.28 kB
'use strict'; 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'];