forest-express
Version:
Official package for all Forest Express Lianas
75 lines (73 loc) • 2.82 kB
JavaScript
;
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;
}();