Skip to content

Instantly share code, notes, and snippets.

@NarHakobyan
Last active November 11, 2019 21:10
Show Gist options
  • Save NarHakobyan/98653000d452d98aff6063d8107c7b02 to your computer and use it in GitHub Desktop.
Save NarHakobyan/98653000d452d98aff6063d8107c7b02 to your computer and use it in GitHub Desktop.
take-if.validator.ts
export function TakeIf<T>(func: (data: T) => boolean, validationOptions?: ValidationOptions) {
return (object: T, propertyName: string) => {
const args: ValidationMetadataArgs = {
validationOptions,
propertyName,
type: ValidationTypes.CONDITIONAL_VALIDATION,
target: object.constructor,
constraints: [(obj: any, _: any) => {
const isOptional = func(obj);
if (!isOptional) {
delete obj[propertyName];
}
return isOptional;
}],
};
getFromContainer(MetadataStorage).addValidationMetadata(new ValidationMetadata(args));
};
}
@NarHakobyan
Copy link
Author

NarHakobyan commented Nov 6, 2019

@TakeIf((data) => data.isActive === false)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment