sipd-auth/utils/validator.go
2025-09-16 08:32:11 +07:00

36 lines
860 B
Go

package utils
import (
"reflect"
"strings"
"github.com/go-playground/validator/v10"
)
// NewValidator func for create a new validator for model fields.
func NewValidator() *validator.Validate {
// Create a new validator for a Book model.
validate := validator.New()
// RegisterTagNameFunc registers a function to get alternate names for StructFields.
// eg. Title become title, CreatedAt become created_at
validate.RegisterTagNameFunc(func(fld reflect.StructField) string {
name := strings.SplitN(fld.Tag.Get("json"), ",", 2)[0]
if name == "-" {
return ""
}
return name
})
// Custom validation for uuid.UUID fields.
/*_ = validate.RegisterValidation("uuid", func(fl validator.FieldLevel) bool {
field := fl.Field().String()
if _, err := uuid.Parse(field); err != nil {
return true
}
return false
})*/
return validate
}