Documentation
¶
Index ¶
- Constants
- Variables
- func DisableDefaultSystemValidators()
- func GetErrorCode(tag string) string
- func GetTranslator() ut.Translator
- func Init()
- func IsCustomValidator(tag string) bool
- func PaddedIpValidator(fl validator.FieldLevel) bool
- func RegisterPaddedIpValidator() error
- func RegisterSystemValidator(tag string, errorCode string)
- func SetSystemValidators(validators map[string]string)
- func ValidateStruct(in any) (*validator.InvalidValidationError, validator.ValidationErrors)
- type ValidatorBuilder
- type ValidatorInfo
- type ValidatorType
Constants ¶
const ( ErrorCodeRequiredField = "REQUIRED-FIELD" ErrorCodeInvalidInputData = "INVALID-INPUT-DATA" )
Error code constants
const RegexPaddedIp string = `^((25[0-5]|2[0-4]\d|1\d\d|0\d\d)\.?\b){4}$` //^((25[0-5]|2[0-4]\d|1\d\d|0\d\d)\.?\b){4}$
Variables ¶
var ( Validator *validator.Validate Translator ut.Translator )
Functions ¶
func DisableDefaultSystemValidators ¶ added in v0.20.0
func DisableDefaultSystemValidators()
DisableDefaultSystemValidators disables registration of default system validators. Custom system validators can still be registered using SetSystemValidators or RegisterSystemValidator. This should be called before Init() to take effect.
func GetErrorCode ¶ added in v0.20.0
GetErrorCode returns the error code for a given tag, or a default if not found.
func GetTranslator ¶
func GetTranslator() ut.Translator
func IsCustomValidator ¶ added in v0.20.0
IsCustomValidator checks if a tag is a custom validator by checking the registry.
func PaddedIpValidator ¶
func PaddedIpValidator(fl validator.FieldLevel) bool
func RegisterPaddedIpValidator ¶ added in v0.20.0
func RegisterPaddedIpValidator() error
RegisterPaddedIpValidator registers the padded_ip validator. This must be called after Init() to register the padded_ip validator. Example:
libValidate.Init()
err := libValidate.RegisterPaddedIpValidator()
if err != nil {
log.Fatalf("failed to register padded_ip validator: %v", err)
}
func RegisterSystemValidator ¶ added in v0.20.0
RegisterSystemValidator registers a system validator (from validator package) in the registry. This can be called by library users to register custom system validators. Example:
libValidate.RegisterSystemValidator("email", libValidate.ErrorCodeInvalidInputData)
func SetSystemValidators ¶ added in v0.20.0
SetSystemValidators allows library users to configure which system validators to register. This should be called before Init() to take effect. If validators is nil or empty, default validators will be used. Example:
libValidate.SetSystemValidators(map[string]string{
"required": libValidate.ErrorCodeRequiredField,
"email": libValidate.ErrorCodeInvalidInputData,
})
func ValidateStruct ¶
func ValidateStruct(in any) (*validator.InvalidValidationError, validator.ValidationErrors)
Types ¶
type ValidatorBuilder ¶ added in v0.20.0
type ValidatorBuilder struct {
// contains filtered or unexported fields
}
ValidatorBuilder provides a fluent interface for registering validators
func RegisterValidation ¶ added in v0.20.0
func RegisterValidation(tag string, fn validator.Func) *ValidatorBuilder
RegisterValidation starts building a validator registration with method chaining. Example:
err := libValidate.RegisterValidation("nationalcode",
func(fl validator.FieldLevel) bool {
nationalCode := fl.Field().String()
return ValidateNationalCode(nationalCode)
}).
WithTranslation(
func(ut ut.Translator) error {
return ut.Add("nationalcode", "{0} وارد شده معتبر نمی باشد", true)
},
func(ut ut.Translator, fe validator.FieldError) string {
t, _ := ut.T("nationalcode", fe.Field())
return t
}).
WithErrorCode(libValidate.ErrorCodeInvalidInputData).
Build()
if err != nil {
log.Fatalf("failed to register validation for nationalcode: %v", err)
}
func (*ValidatorBuilder) Build ¶ added in v0.20.0
func (vb *ValidatorBuilder) Build() error
Build completes the validator registration.
func (*ValidatorBuilder) WithErrorCode ¶ added in v0.20.0
func (vb *ValidatorBuilder) WithErrorCode(errorCode string) *ValidatorBuilder
WithErrorCode sets the error code for the validator. If not called, defaults to ErrorCodeInvalidInputData.
func (*ValidatorBuilder) WithTranslation ¶ added in v0.20.0
func (vb *ValidatorBuilder) WithTranslation(registerFn func(ut.Translator) error, transFn func(ut.Translator, validator.FieldError) string) *ValidatorBuilder
WithTranslation adds translation functions to the validator builder.
type ValidatorInfo ¶ added in v0.20.0
type ValidatorInfo struct {
Tag string
ErrorCode string
Type ValidatorType
}
ValidatorInfo stores information about a registered validator
func GetValidatorInfo ¶ added in v0.20.0
func GetValidatorInfo(tag string) *ValidatorInfo
GetValidatorInfo returns the validator information for a given tag, or nil if not found.
type ValidatorType ¶ added in v0.20.0
type ValidatorType int
ValidatorType represents the type of validator
const ( // ValidatorTypeCustom represents a custom validator registered via RegisterValidation ValidatorTypeCustom ValidatorType = iota // ValidatorTypeSystem represents a system validator (from validator package) ValidatorTypeSystem )