UNPKG

@elsikora/nestjs-crud-automator

Version:

A library for automating the creation of CRUD operations in NestJS.

45 lines (43 loc) 1.86 kB
/** * 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, }; } export { ApiRouteCreateDiscriminatedDtoValidationFailure }; //# sourceMappingURL=create-validation-failure.utility.js.map