import { registerDecorator, ValidationArguments, ValidationOptions, } from 'class-validator'; export function AtLeastOneField(validationOptions?: ValidationOptions) { return function (constructor: Function) { registerDecorator({ name: 'atLeastOneField', target: constructor, propertyName: undefined as any, // important for class-level options: validationOptions, validator: { validate(_: any, args: ValidationArguments) { const object = args.object as Record; return Object.values(object).some((value) => value !== undefined); }, defaultMessage() { return 'At least one field must be provided'; }, }, }); }; }