@geekbears/gb-class-validators
Version:
Geekbears custom validators using class-validator package.
22 lines (20 loc) • 827 B
text/typescript
import { registerDecorator, ValidationArguments, ValidationOptions } from 'class-validator';
import { isEqual } from 'lodash';
export function ExactMatch(property: string, validationOptions?: ValidationOptions) {
return (object: object, propertyName: string) => {
registerDecorator({
name: 'exactMatch',
target: object.constructor,
propertyName,
constraints: [property],
options: validationOptions,
validator: {
validate(value: any, args: ValidationArguments) {
const [relatedPropertyName] = args.constraints;
const relatedValue = (args.object as any)[relatedPropertyName];
return isEqual(value, relatedValue);
},
},
});
};
}