-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
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<R extends VineRule>(List<R Function(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
Labels
No labels