Skip to content

Commit

Permalink
feat: Pass propertyName to ValidateIf condition function
Browse files Browse the repository at this point in the history
  • Loading branch information
maksimaderikha committed Feb 17, 2024
1 parent 6de99ff commit 6929a4a
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 4 deletions.
2 changes: 1 addition & 1 deletion src/decorator/common/ValidateIf.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { getMetadataStorage } from '../../metadata/MetadataStorage';
* Ignores the other validators on a property when the provided condition function returns false.
*/
export function ValidateIf(
condition: (object: any, value: any) => boolean,
condition: (object: any, value: any, propertyName: string) => boolean,
validationOptions?: ValidationOptions
): PropertyDecorator {
return function (object: object, propertyName: string): void {
Expand Down
11 changes: 8 additions & 3 deletions src/validation/ValidationExecutor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ export class ValidationExecutor {
const validationError = this.generateValidationError(object, value, propertyName);
validationErrors.push(validationError);

const canValidate = this.conditionalValidations(object, value, conditionalValidationMetadatas);
const canValidate = this.conditionalValidations(object, value, propertyName, conditionalValidationMetadatas);
if (!canValidate) {
return;
}
Expand Down Expand Up @@ -242,9 +242,14 @@ export class ValidationExecutor {
return validationError;
}

private conditionalValidations(object: object, value: any, metadatas: ValidationMetadata[]): ValidationMetadata[] {
private conditionalValidations(
object: object,
value: any,
propertyName: string,
metadatas: ValidationMetadata[]
): ValidationMetadata[] {
return metadatas
.map(metadata => metadata.constraints[0](object, value))
.map(metadata => metadata.constraints[0](object, value, propertyName))
.reduce((resultA, resultB) => resultA && resultB, true);
}

Expand Down

0 comments on commit 6929a4a

Please sign in to comment.