Skip to content

Add field error accumulation. #1

Description

@Iltotore

Currently, errors on different fields are accumulated:

final payload = {'username':'john'};
final validator = vine.compile(vine.object({
'username': vine.string().minLength(3),
'password': vine
.string()
.hasAtleastOneUpperCase() //Assuming some custom-defined extensions
.hasAtleastOneLowerCase()
.hasAtleastNumber()
})
//Error for both username (minLength) and password (string)
validator.validate({'username':'a', 'password':14})

But errors are short-circuiting on fields:

//Only the error for hasAtleastOneUpperCase is thrown
validator.validate({'username':'Il_totore', 'password':'abc'})

this is relevant when further validations depend on the first rule (e.g hasAtleastOneUpperCase depends on string) but there are many cases where we would like to accumulate fields error e.g:

//Error for hasAtleastOneUpperCase and hasAtleastOneNumber
validator.validate({'username':'Il_totore', 'password':'abc'})

a potential solution would be to add a rule operator (e.g batch)

<R>batch<RextendsVineRule>(List<RFunction(VineRule)>> rules)
final payload = {'username':'john'};
final validator = vine.compile(vine.object({
'username': vine.string().minLength(3),
'password': vine
.string()
.batch([
.hasAtleastOneUpperCase() //Assuming some custom-defined extensions
.hasAtleastOneLowerCase()
.hasAtleastNumber()
])
})
//Error for hasAtleastOneUpperCase and hasAtleastOneNumber
validator.validate({'username':'Il_totore', 'password':'abc'})

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions