github.com/profzone/eden-framework@v1.0.10/pkg/validate/validate.go (about) 1 package validate 2 3 import ( 4 "github.com/profzone/eden-framework/pkg/validate/validatetpl" 5 ) 6 7 type ValidateFn func(v interface{}) (bool, string) 8 9 func AddValidateFunc(name string, validateFunc ValidateFn) { 10 validatetpl.AddValidateFunc(name, validateFunc) 11 } 12 13 func GetValidateFunc(name string) (validateFunc ValidateFn, ok bool) { 14 return validatetpl.GetValidateFunc(name) 15 } 16 17 func ValidateItem(tagValidate string, v interface{}, tagErrMsg ...string) (valid bool, message string) { 18 var validateFn ValidateFn 19 var ok bool 20 if validateFn, ok = GetValidateFunc(tagValidate); !ok { 21 validateFn = validatetpl.GenerateValidateFuncByTag(tagValidate) 22 if validateFn != nil { 23 AddValidateFunc(tagValidate, validateFn) 24 } 25 } 26 if validateFn != nil { 27 valid, message = validateFn(v) 28 if !valid { 29 if len(tagErrMsg) > 0 && tagErrMsg[0] != "" { 30 message = tagErrMsg[0] 31 } 32 } 33 return 34 } 35 return true, "" 36 }