65 lines
1.4 KiB
Go
65 lines
1.4 KiB
Go
|
package validator
|
||
|
|
||
|
import (
|
||
|
"errors"
|
||
|
|
||
|
"github.com/gookit/validate"
|
||
|
"leafdev.top/Leaf/leaf-library-3/internal/types/dto"
|
||
|
)
|
||
|
|
||
|
var (
|
||
|
ErrValidationFailed = errors.New("validation field failed")
|
||
|
)
|
||
|
|
||
|
func init() {
|
||
|
// 可以自定义验证
|
||
|
// Custom struct validation tag format
|
||
|
//if err := validate.Struct("teener", func(fl validator.FieldLevel) bool {
|
||
|
// // User.Age needs to fit our needs, 12-18 years old.
|
||
|
// return fl.Field().Int() >= 12 && fl.Field().Int() <= 18
|
||
|
//}); err != nil {
|
||
|
// panic(err)
|
||
|
//}
|
||
|
|
||
|
validate.AddValidator("myCheck0", func(val any) bool {
|
||
|
// do validate val ...
|
||
|
return true
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func Struct(data interface{}) (validationErrors *[]dto.ValidateError, err error) {
|
||
|
v := validate.Struct(data)
|
||
|
|
||
|
var e error
|
||
|
var ves []dto.ValidateError
|
||
|
|
||
|
if v.Validate() {
|
||
|
return &ves, e // 返回指针
|
||
|
} else {
|
||
|
e = ErrValidationFailed
|
||
|
|
||
|
for _, err := range v.Errors {
|
||
|
ves = append(ves, dto.ValidateError{
|
||
|
Message: err.String(),
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//if errs != nil {
|
||
|
// for
|
||
|
// //for _, err := range errs.(validator.ValidationErrors) {
|
||
|
// // // In this case data object is actually holding the User struct
|
||
|
// // var elem ErrorResponse
|
||
|
// //
|
||
|
// // elem.FailedField = err.Field() // Export struct field name
|
||
|
// // elem.Tag = err.Tag() // Export struct tag
|
||
|
// // elem.Value = err.Value() // Export field value
|
||
|
// // elem.Error = true
|
||
|
// //
|
||
|
// // validationErrors = append(validationErrors, elem)
|
||
|
// //}
|
||
|
//}
|
||
|
|
||
|
return &ves, e
|
||
|
}
|