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 }