UNPKG

forest-express

Version:

Official package for all Forest Express Lianas

75 lines (73 loc) 2.82 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); module.exports = /*#__PURE__*/function () { function ModelsManager(_ref) { var configStore = _ref.configStore; (0, _classCallCheck2["default"])(this, ModelsManager); this.configStore = configStore; this.models = null; } (0, _createClass2["default"])(ModelsManager, [{ key: "_flatConnectionsModels", value: function _flatConnectionsModels() { var connections = this.configStore.lianaOptions.connections; // Should transform connections object to an array containing all models // connections => { db1: { models: { model1: {} } }, db2: { models: { model2: {} } } } // return [ model1, model2 ] return Object.values(connections).reduce(function (models, connection) { return models.concat(Object.values(connection.models)); }, []); } }, { key: "_filterModels", value: function _filterModels(models, condition) { var getModelName = this.configStore.Implementation.getModelName; return models.filter(function (model) { return condition(getModelName(model)); }); } }, { key: "_computeModels", value: function _computeModels(models) { var getModelName = this.configStore.Implementation.getModelName; return models.reduce(function (computedModels, model) { computedModels[getModelName(model)] = model; return computedModels; }, {}); } }, { key: "_generateModelList", value: function _generateModelList() { var _this$configStore$lia = this.configStore.lianaOptions, includedModels = _this$configStore$lia.includedModels, excludedModels = _this$configStore$lia.excludedModels; var models = this._flatConnectionsModels(); var useInclude = includedModels && includedModels.length; var useExclude = excludedModels && excludedModels.length; if (useInclude) { models = this._filterModels(models, function (modelName) { return includedModels.includes(modelName); }); } else if (useExclude) { models = this._filterModels(models, function (modelName) { return !excludedModels.includes(modelName); }); } this.models = this._computeModels(models); } }, { key: "getModels", value: function getModels() { if (!this.models) this._generateModelList(); return this.models; } }, { key: "getModelByName", value: function getModelByName(name) { return this.getModels()[name]; } }]); return ModelsManager; }();