UNPKG

@mbc-cqrs-serverless/master

Version:

Master data management such as setting, sequence, etc.

34 lines 1.41 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DetailKeys = void 0; const core_1 = require("@mbc-cqrs-serverless/core"); const common_1 = require("@nestjs/common"); const class_transformer_1 = require("class-transformer"); const class_validator_1 = require("class-validator"); exports.DetailKeys = (0, common_1.createParamDecorator)(async (data, ctx) => { const request = ctx.switchToHttp().getRequest(); const id = request.params.id; if (typeof id !== 'string' || id.trim() === '') { throw new common_1.BadRequestException('ID must be a non-empty string.'); } const { pk, sk } = getDetailKeyFromId(id); if (!pk || !sk) { throw new common_1.BadRequestException('Invalid ID format. Expected ID to contain valid PK and SK components separated by "#".'); } const detailDto = (0, class_transformer_1.plainToInstance)(core_1.DetailDto, { pk, sk }); const errors = await (0, class_validator_1.validate)(detailDto); if (errors.length > 0) { throw new common_1.BadRequestException(errors.map((err) => Object.values(err.constraints)).flat()); } return detailDto; }); function getDetailKeyFromId(id) { const parts = id.split('#'); const pk = parts.slice(0, 2).join('#'); const sk = parts.slice(2).join('#'); return { pk: pk, sk: sk, }; } //# sourceMappingURL=key.js.map