mirror of
https://github.com/foomo/fender.git
synced 2025-10-16 12:25:39 +00:00
22 lines
533 B
Go
22 lines
533 B
Go
package fender
|
|
|
|
import (
|
|
"github.com/foomo/fender/config"
|
|
"github.com/foomo/fender/rule"
|
|
"github.com/go-playground/validator/v10"
|
|
)
|
|
|
|
func Struct(s interface{}) (*Error, error) {
|
|
if err := config.Validator.Struct(s); err == nil {
|
|
return nil, nil
|
|
} else if errs, ok := err.(validator.ValidationErrors); ok {
|
|
errorsMap := make(FieldErrors, len(errs))
|
|
for _, err := range errs {
|
|
errorsMap[err.Field()] = rule.NewCustomRuleError(err.Tag(), err.Param())
|
|
}
|
|
return NewError(errorsMap), nil
|
|
} else {
|
|
return nil, err
|
|
}
|
|
}
|