go validator example
// NOTED: if value or key is exist in mapping = error
// NOTED: if value or key is not exist in mapping = not error
// more validation struct reference follow this link -> https://github.com/go-playground/validator
// example usage
package main
import (
"fmt"
util "github.com/restuwahyu13/customvalidator/utils"
)
type User struct {
Fullname string `validate:"required,lowercase"`
Email string `validate:"required,email"`
}
func main() {
var input User
input.Fullname = "Restu Wahyu Saputra"
input.Email = "restuwahyu13@#zetmail.com"
resultErr := util.GoValidator(input)
if resultErr["Fullname"] == "" {
fmt.Println("Fullname is required")
return
}
if resultErr["Email"] == "" {
fmt.Println("Emai is required")
return
}
if resultErr["Fullname"] == "Restu Wahyu Saputra" {
fmt.Println("Fullname must be lowercase not camelcase")
return
}
if resultErr["Email"] == "restuwahyu13@#zetmail.com" {
fmt.Println("Emai is not valid")
return
}
}
// example custom validator
package util
import "github.com/go-playground/validator/v10"
var validate *validator.Validate
func GoValidator(s interface{}) map[string]interface{} {
validate = validator.New()
err := validate.Struct(s)
errObject := make(map[string]interface{})
if err != nil {
for _, errResult := range err.(validator.ValidationErrors) {
errObject[errResult.StructField()] = errResult.Value()
}
}
return errObject
}