8b4b9ef8da
Forcing "type" to be explicit, works best will rollup on the frontend to exclude depdendencies
34 lines
1.1 KiB
TypeScript
34 lines
1.1 KiB
TypeScript
import { plainToInstance } from 'class-transformer';
|
|
import { validateOrReject, type ValidationError } from 'class-validator';
|
|
|
|
import {
|
|
FieldMetadataException,
|
|
FieldMetadataExceptionCode,
|
|
} from 'src/engine/metadata-modules/field-metadata/field-metadata.exception';
|
|
import { RelationCreationPayloadValidation } from 'src/engine/metadata-modules/field-metadata/services/field-metadata-relation.service';
|
|
|
|
export const validateRelationCreationPayloadOrThrow = async (
|
|
relationCreationPayload: RelationCreationPayloadValidation,
|
|
) => {
|
|
try {
|
|
const relationCreationPayloadInstance = plainToInstance(
|
|
RelationCreationPayloadValidation,
|
|
relationCreationPayload,
|
|
);
|
|
|
|
await validateOrReject(relationCreationPayloadInstance);
|
|
} catch (error) {
|
|
const errorMessages = Array.isArray(error)
|
|
? error
|
|
.map((err: ValidationError) => Object.values(err.constraints ?? {}))
|
|
.flat()
|
|
.join(', ')
|
|
: error.message;
|
|
|
|
throw new FieldMetadataException(
|
|
`Relation creation payload is invalid: ${errorMessages}`,
|
|
FieldMetadataExceptionCode.INVALID_FIELD_INPUT,
|
|
);
|
|
}
|
|
};
|