Skip to content

feat: Add conditional validation with if(cond = <expr>, <rules>...) syntax#149

Open
aobatact wants to merge 3 commits intojprochazk:mainfrom
aobatact:conditional
Open

feat: Add conditional validation with if(cond = <expr>, <rules>...) syntax#149
aobatact wants to merge 3 commits intojprochazk:mainfrom
aobatact:conditional

Conversation

@aobatact
Copy link

close #78

This PR introduces conditional validation functionality to garde, allowing users to apply validation rules only when specific conditions are met. This enables more flexible and dynamic validation logic based on field values or context.

Syntax:

#[garde(if(cond = <expression>, <rules>...))]

Alternative Syntaxes Considered

Option 1: Global scope modifier

#[garde(ascii, length(min = 3), if(self.enabled))]
This creates ambiguity about which rules the condition applies to and breaks the independence of individual validation rules.

Option 2: Per-rule conditions

#[garde(ascii(if = self.check_ascii), length(min = 3, if = self.check_length))]
While this maintains rule independence, it becomes verbose, and less efficient when multiple rules share the same condition.

Option 3: Simple wrapper syntax

#[garde(if(self.enabled, ascii, length(min = 3)))]
While simpler, this creates order dependency between the condition and rules.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Conditionally apply rule

1 participant