UNPKG

@mbc-cqrs-serverless/ui-setting

Version:
148 lines 6.73 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var DataSettingService_1; Object.defineProperty(exports, "__esModule", { value: true }); exports.DataSettingService = void 0; const core_1 = require("@mbc-cqrs-serverless/core"); const common_1 = require("@nestjs/common"); const path_1 = require("path"); const data_setting_data_entity_1 = require("../entities/data-setting-data.entity"); const data_setting_data_list_entity_1 = require("../entities/data-setting-data-list.entity"); const helpers_1 = require("../helpers"); let DataSettingService = DataSettingService_1 = class DataSettingService { constructor(commandService, dataService) { this.commandService = commandService; this.dataService = dataService; this.logger = new common_1.Logger(DataSettingService_1.name); } async list(tenantCode, searchDto) { const pk = (0, helpers_1.generateSettingPk)(tenantCode); const query = { sk: undefined, limit: 100 }; if (searchDto.settingCode) { query.sk = { skExpession: 'begins_with(sk, :settingCode)', skAttributeValues: { ':settingCode': `${searchDto.settingCode}${core_1.KEY_SEPARATOR}`, }, }; } const res = (await this.dataService.listItemsByPk(pk, query)); if (res?.items) { res.items = res.items.filter((item) => !item.sk.startsWith(`${helpers_1.SETTING_SK_PREFIX}${core_1.KEY_SEPARATOR}`)); } return new data_setting_data_list_entity_1.DataSettingDataListEntity(res); } async get(key) { const res = await this.dataService.getItem(key); return new data_setting_data_entity_1.DataSettingDataEntity(res); } async create(tenantCode, createDto, opts) { const { settingCode, code } = createDto; const pk = (0, helpers_1.generateSettingPk)(tenantCode); const sk = (0, helpers_1.generateDataSettingSk)(settingCode, code); const id = (0, core_1.generateId)(pk, sk); const dataSetting = await this.dataService.getItem({ pk, sk }); if (dataSetting && dataSetting.isDeleted == false) { throw new common_1.BadRequestException('Data setting is exist!'); } const settingSk = (0, helpers_1.generateSettingSk)(settingCode); const setting = (await this.dataService.getItem({ pk, sk: settingSk, })); if (!setting || setting.isDeleted) { throw new common_1.NotFoundException('Setting code is not exist!'); } const createCmd = { id, pk, sk, version: dataSetting?.version ?? core_1.VERSION_FIRST, type: helpers_1.MASTER_PK_PREFIX, tenantCode, isDeleted: false, ...createDto, }; const item = await this.commandService.publish(createCmd, { source: (0, core_1.getCommandSource)((0, path_1.basename)(__dirname), this.constructor.name, 'createDataSetting'), invokeContext: opts.invokeContext, }); return new data_setting_data_entity_1.DataSettingDataEntity(item); } async update(key, updateDto, opts) { const data = (await this.dataService.getItem(key)); if (!data) { throw new common_1.NotFoundException(); } if (updateDto.attributes) { const { settingCode } = (0, helpers_1.parseDataSettingSk)(data.sk); const settingSk = (0, helpers_1.generateSettingSk)(settingCode); const setting = (await this.dataService.getItem({ pk: key.pk, sk: settingSk, })); if (!setting || setting.isDeleted) { throw new common_1.NotFoundException('Setting code is not exist!'); } } const updateCmd = { id: data.id, pk: data.pk, sk: data.sk, version: data.version, code: data.code, name: updateDto.name ?? data.name, type: data.type, tenantCode: data.tenantCode, isDeleted: updateDto.isDeleted ?? data.isDeleted, attributes: updateDto.attributes ?? data.attributes, }; const item = await this.commandService.publish(updateCmd, { source: (0, core_1.getCommandSource)((0, path_1.basename)(__dirname), this.constructor.name, 'updateDataSetting'), invokeContext: opts.invokeContext, }); return new data_setting_data_entity_1.DataSettingDataEntity(item); } async delete(key, opts) { const data = (await this.dataService.getItem(key)); if (!data) { throw new common_1.NotFoundException(); } if (data.isDeleted) { throw new common_1.BadRequestException('This setting is already delete!'); } const deleteCmd = { ...data, isDeleted: true, }; const item = await this.commandService.publish(deleteCmd, { source: (0, core_1.getCommandSource)((0, path_1.basename)(__dirname), this.constructor.name, 'deleteDataSetting'), invokeContext: opts.invokeContext, }); return new data_setting_data_entity_1.DataSettingDataEntity(item); } async checkExistCode(tenantCode, settingCode, code) { const pk = (0, helpers_1.generateSettingPk)(tenantCode); const sk = (0, helpers_1.generateDataSettingSk)(settingCode, code); const item = (await this.dataService.getItem({ pk, sk, })); return !!item && !item.isDeleted; } }; exports.DataSettingService = DataSettingService; exports.DataSettingService = DataSettingService = DataSettingService_1 = __decorate([ (0, common_1.Injectable)(), __metadata("design:paramtypes", [core_1.CommandService, core_1.DataService]) ], DataSettingService); //# sourceMappingURL=data-setting.service.js.map