@mbc-cqrs-serverless/master
Version:
Master data management such as setting, sequence, etc.
34 lines • 1.41 kB
JavaScript
;
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