import { registerDecorator } from '../../src/index'; import { ValidationOptions } from '../../src/decorator/ValidationOptions'; import { ValidatorConstraintInterface } from '../../src/validation/ValidatorConstraintInterface'; import { ValidatorConstraint } from '../../src/decorator/decorators'; import { ValidationArguments } from '../../src/validation/ValidationArguments'; export function IsLongerThan(property: string, validationOptions?: ValidationOptions) { return function (object: Object, propertyName: string) { registerDecorator({ target: object.constructor, propertyName: propertyName, options: validationOptions, constraints: [property], validator: IsLongerThanConstraint, }); }; } @ValidatorConstraint({ name: 'isLongerThan' }) export class IsLongerThanConstraint implements ValidatorConstraintInterface { validate(value: any, args: ValidationArguments) { const [relatedPropertyName] = args.constraints; const relatedValue = (args.object as any)[relatedPropertyName]; return typeof value === 'string' && typeof relatedValue === 'string' && value.length > relatedValue.length; } }