【Golang + go-playground/validator】DBを含めたバリデーションの実装
課題
- DBを含めたバリデーションを実装したい
サンプル実装
userテーブルのemailに同じemailがあったらバリデートする。
type DBAbstraction struct { db interface{} //ここは実際のコードの型に合わせる } func (a *DBAbstraction) ValidateExistsEmail(fl validator.FieldLevel) bool { existsEmail, _ := a.db.User.ExistsEmail(fl.Field().String()) //ここでsqlを叩きemailが存在するか確認。 return existsEmail } func Setup(ds *store.Store) *echo.Echo { e := echo.New() dba := &DBAbstraction{db: ds} validator := validator.New() validator.RegisterValidation("exists-email", dba.ValidateExistsEmail) //バリデーションの登録 e.Validator = &CustomValidator{validator: validator} return e }