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]+$/.test(value);
                },
                defaultMessage(args: ValidationArguments) {
                    return `${args.property} should contain only alphabetic characters.`;
                },
            },
        });
    };
}
