import {
  registerDecorator,
  ValidationOptions,
  ValidationArguments,
} from 'class-validator';

export function IsAlphaWithMessage(validationOptions?: ValidationOptions) {
  return function (object: Object, propertyName: string) {
    registerDecorator({
      name: 'isAlpha',
      target: object.constructor,
      propertyName: propertyName,
      constraints: [],
      options: validationOptions,
      validator: {
        validate(value: any, args: ValidationArguments) {
          return (
            typeof value === 'string' &&
            /^[A-Za-z]+(?: [A-Za-z]+)*$/.test(value)
          );
        },
        defaultMessage(args: ValidationArguments) {
          return `${args.property} should contain only alphabetic.`;
        },
      },
    });
  };
}
