fender/struct.go
2022-02-04 09:03:30 +01:00

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
}
}