Go-TestAPI/validators/validators.go

34 lines
663 B
Go
Raw Permalink Normal View History

package validators
import (
"fmt"
"github.com/go-playground/validator/v10"
"golang-test/database"
"golang-test/libs"
"log"
)
var Validate *validator.Validate
func init() {
Validate = validator.New()
err := Validate.RegisterValidation("custom_unique", UniqueValidator)
if err != nil {
return
}
}
func UniqueValidator(fl validator.FieldLevel) bool {
db := database.Connector()
field := fl.Field().String()
structType := libs.ToSnakeCase(fl.Top().Type().Name()) + "s"
param := fl.Param()
log.Println(field, structType, param)
var count int64
db.Table(structType).Where(fmt.Sprintf("%s = ?", param), field).Count(&count)
return count == 0
}