funcValidateUniq(flvalidator.FieldLevel)bool{varresultstruct{Countint}currentField,_,_:=fl.GetStructFieldOK()table:=modelTableNameMap[currentField.Type().Name()]// table name
value:=fl.Field().String()// value
column:=fl.FieldName()// column name
sql:=fmt.Sprintf("select count(*) from %s where %s='%s'",table,column,value)db.PG.Raw(sql).Scan(&result)dup:=result.Count>0return!dup}
packagemodelimport("coconut/db""fmt"validator"gopkg.in/go-playground/validator.v9""github.com/gin-gonic/gin/binding""github.com/gin-gonic/gin""github.com/jinzhu/gorm")typeCategorystruct{gorm.ModelNamestring`form:"name" json:"name" binding:"required,is-uniq"`Slugstring`form:"slug" json:"slug" binding:"required"`}// CATEGORY VALIDATOR
typeCategoryValidatorstruct{CategoryModelCategory`json:"category"`}func(s*CategoryValidator)Bind(c*gin.Context)error{b:=binding.Default(c.Request.Method,c.ContentType())err:=c.ShouldBindWith(s,b)iferr!=nil{returnerr}returnnil}funcValidateUniq(flvalidator.FieldLevel)bool{varresultstruct{Countint}currentField,_,_:=fl.GetStructFieldOK()table:=modelTableNameMap[currentField.Type().Name()]// table name
value:=fl.Field().String()// value
column:=fl.FieldName()// column name
sql:=fmt.Sprintf("select count(*) from %s where %s='%s'",table,column,value)db.PG.Raw(sql).Scan(&result)dup:=result.Count>0return!dup}