@elsikora/nestjs-crud-automator
Version:
A library for automating the creation of CRUD operations in NestJS.
47 lines (44 loc) • 1.93 kB
JavaScript
;
/**
* Creates class-validator-shaped validation failure for route-level discriminator selection failures.
* @param {TApiRouteDiscriminatedDtoProperties} properties - Route-level discriminated DTO config.
* @param {unknown} payload - Request body payload.
* @returns {ValidationError} Class-validator-compatible validation failure.
*/
function ApiRouteCreateDiscriminatedDtoValidationFailure(properties, payload) {
const discriminatorPropertyName = properties.discriminator.propertyName;
const allowedValuesDescription = Object.keys(properties.discriminator.mapping)
.map((value) => {
return `'${value}'`;
})
.join(", ");
if (!payload || typeof payload !== "object" || Array.isArray(payload)) {
return {
constraints: {
mustMatchDiscriminatorMapping: "body must be an object",
},
property: "body",
value: payload,
};
}
const payloadAsRecord = payload;
if (!(discriminatorPropertyName in payloadAsRecord)) {
return {
constraints: {
mustMatchDiscriminatorMapping: `${discriminatorPropertyName} is missing required discriminator field '${discriminatorPropertyName}'`,
},
property: discriminatorPropertyName,
value: undefined,
};
}
const discriminatorValue = payloadAsRecord[discriminatorPropertyName];
return {
constraints: {
mustMatchDiscriminatorMapping: `${discriminatorPropertyName} has invalid discriminator value '${String(discriminatorValue)}'. must be one of: ${allowedValuesDescription}`,
},
property: discriminatorPropertyName,
value: discriminatorValue,
};
}
exports.ApiRouteCreateDiscriminatedDtoValidationFailure = ApiRouteCreateDiscriminatedDtoValidationFailure;
//# sourceMappingURL=create-validation-failure.utility.js.map