UNPKG

@egalteam/framework

Version:

Egal

262 lines (261 loc) 12.9 kB
"use strict"; 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;