学習備忘ログ

よく使うコードや設定のメモ

【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
}