mirror of
https://github.com/yusing/godoxy.git
synced 2026-03-26 19:11:08 +01:00
fix(serialization): correct validation parameter
- Fix bug in mapUnmarshalValidate where checkValidateTag parameter was incorrectly negated when passed to Convert() - Remove obsolete validateWithValidator helper function
This commit is contained in:
@@ -29,17 +29,19 @@ type CustomValidator interface {
|
||||
var validatorType = reflect.TypeFor[CustomValidator]()
|
||||
|
||||
func ValidateWithCustomValidator(v reflect.Value) gperr.Error {
|
||||
vt := v.Type()
|
||||
if v.Kind() == reflect.Pointer {
|
||||
if v.IsNil() {
|
||||
// return nil
|
||||
return validateWithValidator(reflect.New(v.Type().Elem()))
|
||||
}
|
||||
if v.Type().Implements(validatorType) {
|
||||
elemType := vt.Elem()
|
||||
if vt.Implements(validatorType) {
|
||||
if v.IsNil() {
|
||||
return reflect.New(elemType).Interface().(CustomValidator).Validate()
|
||||
}
|
||||
return v.Interface().(CustomValidator).Validate()
|
||||
}
|
||||
return validateWithValidator(v.Elem())
|
||||
if elemType.Implements(validatorType) {
|
||||
return v.Elem().Interface().(CustomValidator).Validate()
|
||||
}
|
||||
} else {
|
||||
vt := v.Type()
|
||||
if vt.PkgPath() != "" { // not a builtin type
|
||||
// prioritize pointer method
|
||||
if v.CanAddr() {
|
||||
@@ -56,10 +58,3 @@ func ValidateWithCustomValidator(v reflect.Value) gperr.Error {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func validateWithValidator(v reflect.Value) gperr.Error {
|
||||
if v.Type().Implements(validatorType) {
|
||||
return v.Interface().(CustomValidator).Validate()
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user