leaf-library-3/internal/pkg/validator/validator.go

65 lines
1.4 KiB
Go
Raw Normal View History

2024-12-06 15:38:22 +00:00
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
}