@mbc-cqrs-serverless/ui-setting
Version:
Setting master data
148 lines • 6.73 kB
JavaScript
;
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