@egalteam/framework
Version:
Egal
262 lines (261 loc) • 12.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Model = void 0;
var GetItemsAction_1 = require("../Actions/GetItemsAction/GetItemsAction");
var CRUDAction_1 = require("../Actions/CRUDActions/CRUDAction");
var CustomAction_1 = require("../Actions/CustomAction/CustomAction");
var GetModelMetadataAction_1 = require("../Actions/GetMetadataAction/GetModelMetadataAction");
var Observer_1 = require("../Actions/NetworkRequests/SocketConnection/Observer");
var GlobalVariables_1 = require("../GlobalVariables");
var ModelConnection_1 = require("./ModelConnection");
var observer = Observer_1.EventObserver.getInstance();
var Model = /** @class */ (function () {
function Model(username, password, modelName) {
this.modelName = modelName;
this.username = username;
this.password = password;
this.modelItems = [];
this.modelActionList = [];
this.modelValidationRules = {};
this.modelActionsMetaData = {};
this.actionResponse = [];
this.databaseFields = [];
this.fieldsWithTypes = [];
this.allModelsMetadata = {};
this.tokenUmt = false;
this.tokenUst = '';
}
Model.prototype.setAuthToken = function (token) {
GlobalVariables_1.GlobalVariables.tokenUST = token;
};
/**
* Получение метаданных модели
* @param microserviceName
* @param connectionType
*/
Model.prototype.actionGetMetadata = function (microserviceName, connectionType) {
GlobalVariables_1.GlobalVariables.tokenUST = microserviceName;
var initializeGetMetadataRequest = new GetModelMetadataAction_1.GetModelMetadataAction(microserviceName, 'getMetadata', this.modelName);
new ModelConnection_1.ModelConnection().createConnection(connectionType, initializeGetMetadataRequest);
};
/**
* Получение данных модели с возможными параметрами, юзер передает все данные вместе, но в экшен их нужно передавать отдельно
* @param microserviceName
* @param connectionType
* @param withs
* @param filter
* @param orders
* @param page
* @param perPage
* @param actionName
*/
Model.prototype.actionGetItems = function (microserviceName, connectionType, perPage, page, filter, withs, orders, actionName) {
var userGetItems = actionName !== undefined ? actionName : 'getItems';
GlobalVariables_1.GlobalVariables.tokenUST = microserviceName;
var initializeGetItems = new GetItemsAction_1.GetItemsAction(microserviceName, this.modelName, userGetItems);
initializeGetItems.actionParameters.with(withs);
initializeGetItems.actionParameters.filters(filter);
initializeGetItems.actionParameters.orders(orders);
if (perPage !== undefined && page !== undefined) {
initializeGetItems.actionParameters.setPagination(perPage, page);
}
new ModelConnection_1.ModelConnection().createConnection(connectionType, initializeGetItems);
};
/**
* Отличается от getItems тем, что отдельно должен быть передан айди нужной записи
* @param microserviceName
* @param connectionType
* @param id
* @param withs
* @param filter
* @param orders
*/
Model.prototype.actionGetItem = function (microserviceName, connectionType, id, filter, withs, orders) {
GlobalVariables_1.GlobalVariables.tokenUST = microserviceName;
var initializeGetItem = new GetItemsAction_1.GetItemsAction(microserviceName, this.modelName, 'getItem');
initializeGetItem.actionParameters.with(withs);
initializeGetItem.actionParameters.filters(filter);
initializeGetItem.actionParameters.orders(orders);
initializeGetItem.actionParameters.setId(id);
new ModelConnection_1.ModelConnection().createConnection(connectionType, initializeGetItem);
};
/**
* Экшен обновления записи
* @param microserviceName
* @param connectionType
* @param actionParams
*/
Model.prototype.actionUpdate = function (microserviceName, connectionType, actionParams) {
GlobalVariables_1.GlobalVariables.tokenUST = microserviceName;
var initializeActionUpdate = new CRUDAction_1.CRUDAction(microserviceName, this.modelName, 'update', actionParams);
new ModelConnection_1.ModelConnection().createConnection(connectionType, initializeActionUpdate);
};
/**
*
* @param microserviceName
* @param connectionType
* @param actionParams
*/
Model.prototype.actionUpdateMany = function (microserviceName, connectionType, actionParams) {
GlobalVariables_1.GlobalVariables.tokenUST = microserviceName;
var initializeActionUpdate = new CRUDAction_1.CRUDAction(microserviceName, this.modelName, 'updateMany', actionParams);
new ModelConnection_1.ModelConnection().createConnection(connectionType, initializeActionUpdate);
};
/**
* Экшен обновляет записи, соответствующие заданным фильтрам
* @param microserviceName
* @param connectionType
* @param actionParams
*/
Model.prototype.actionUpdateManyWithFilter = function (microserviceName, connectionType, actionParams) {
GlobalVariables_1.GlobalVariables.tokenUST = microserviceName;
var initializeActionUpdateManyWithFilter = new CRUDAction_1.CRUDAction(microserviceName, this.modelName, 'updateManyRaw', actionParams);
new ModelConnection_1.ModelConnection().createConnection(connectionType, initializeActionUpdateManyWithFilter);
};
/**
* Экшен создания записи
* @param microserviceName
* @param connectionType
* @param actionParams
* @param channelParameters
*/
Model.prototype.actionCreate = function (microserviceName, connectionType, actionParams, channelParameters) {
GlobalVariables_1.GlobalVariables.tokenUST = microserviceName;
var initializeActionCreate = new CRUDAction_1.CRUDAction(microserviceName, this.modelName, 'create', actionParams, channelParameters);
new ModelConnection_1.ModelConnection().createConnection(connectionType, initializeActionCreate);
};
/**
*
* @param microserviceName
* @param connectionType
* @param actionParams
*/
Model.prototype.actionCreateMany = function (microserviceName, connectionType, actionParams) {
GlobalVariables_1.GlobalVariables.tokenUST = microserviceName;
var initializeActionCreate = new CRUDAction_1.CRUDAction(microserviceName, this.modelName, 'createMany', actionParams);
new ModelConnection_1.ModelConnection().createConnection(connectionType, initializeActionCreate);
};
/**
* Экшен удаления записи
* @param microserviceName
* @param connectionType
* @param actionParams
*/
Model.prototype.actionDelete = function (microserviceName, connectionType, actionParams) {
GlobalVariables_1.GlobalVariables.tokenUST = microserviceName;
var initializeActionDelete = new CRUDAction_1.CRUDAction(microserviceName, this.modelName, 'delete', actionParams);
new ModelConnection_1.ModelConnection().createConnection(connectionType, initializeActionDelete);
};
/**
*
* @param microserviceName
* @param connectionType
* @param actionParams
*/
Model.prototype.actionDeleteMany = function (microserviceName, connectionType, actionParams) {
GlobalVariables_1.GlobalVariables.tokenUST = microserviceName;
var initializeActionDelete = new CRUDAction_1.CRUDAction(microserviceName, this.modelName, 'deleteMany', actionParams);
new ModelConnection_1.ModelConnection().createConnection(connectionType, initializeActionDelete);
};
/**
* Экшен удаляет записи, соответствующие заданным фильтрам
* @param microserviceName
* @param connectionType
* @param actionParams
*/
Model.prototype.actionDeleteManyWithFilter = function (microserviceName, connectionType, actionParams) {
GlobalVariables_1.GlobalVariables.tokenUST = microserviceName;
var initializeActionDeleteManyWithFilter = new CRUDAction_1.CRUDAction(microserviceName, this.modelName, 'deleteManyRaw', actionParams);
new ModelConnection_1.ModelConnection().createConnection(connectionType, initializeActionDeleteManyWithFilter);
};
/**
*
* @param microserviceName
* @param actionName
* @param connectionType
* @param actionParams
*/
Model.prototype.actionCustom = function (microserviceName, actionName, connectionType, actionParams, additionalParams) {
GlobalVariables_1.GlobalVariables.tokenUST = microserviceName;
var initializeActionCustom = new CustomAction_1.CustomAction(microserviceName, this.modelName, actionName, actionParams, additionalParams);
new ModelConnection_1.ModelConnection().createConnection(connectionType, initializeActionCustom);
};
/**
* позволяет получить метадату текущей модели
*/
Model.prototype.getModelMetadata = function () {
return this.modelMetaData;
};
/**
* позволяет получить список доступных модели экшенов (получается с бэка в составе метадаты)
*/
Model.prototype.getModelActionList = function () {
this.modelActionList = Object.keys(this.modelMetaData.actions_metadata);
return this.modelActionList;
};
/**
* позволяет получить правила валидации для всех доступных филдов
*/
Model.prototype.getModelValidationRules = function () {
return this.modelValidationRules;
};
/**
* позволяет получить расширинную информацию по каждому экшену
*/
Model.prototype.getModelActionsMetaData = function () {
this.modelActionsMetaData = this.modelMetaData.actions_metadata;
return this.modelActionsMetaData;
};
/**
* позволяет получить филды с типом base
*/
Model.prototype.getModelDataBaseFields = function () {
this.databaseFields = this.modelMetaData.database_fields;
return this.databaseFields;
};
/**
* позволяет получить филды с указанными типами
*/
Model.prototype.getModelFieldsWithTypes = function () {
this.fieldsWithTypes = this.modelMetaData.fields_with_types;
return this.fieldsWithTypes;
};
/**
* позволяет получить отфильтрованные список айтемов.
* в функцию передается массив с названиями филдов от пользователя (fields), массив всех айтемов,
* которые нужно отфильтровать (dataToFilter) и указание типа фильтрации (filterType): includes возвращаяет только филды,
* указанные в массиве, excludes исключает филды, указанные в массиве
*
* @param fields
* @param filterType
* @param dataToFilter
*/
// getSpecificFields(fields: string[], filterType: string, dataToFilter: object[]) {
// if (filterType === 'includes') return new DataFormatter(fields, dataToFilter).include();
// return new DataFormatter(fields, dataToFilter).exclude();
// }
/**
* позволяет получить уже запрошенные айтемы модели
*/
Model.prototype.getItems = function () {
return this.modelItems;
};
/**
* позволяет получить уже запрошенную метадату всех моделей приложения
*/
Model.prototype.getAllModelsMetadata = function () {
return this.allModelsMetadata;
};
/**
* Функция используется для установки основного домена при начале работы с моделью
* @param URL
*/
Model.prototype.setBaseUrl = function (URL) {
GlobalVariables_1.GlobalVariables.httpBaseUrl = URL;
};
Model.prototype.socketDisconnect = function () {
observer.broadcastSocketDisconnect('disconnect');
};
return Model;
}());
exports.Model = Model;