Vá usando o mux Router - Como passar meu banco de dados para meus manipuladores
No momento, tento criar um pequeno projeto da Web usando Go para manipulação de dados no servidor.
Tento passar minha conexão com o banco de dados para minhas HandlerFunc (tions), mas não funciona conforme o esperado. Eu sou muito novo no golang, então talvez eu não tenha entendido alguns princípios básicos desse idioma.
Minha principal função é assim:
func main() {
db, err := config.NewDB("username:password@/databasename?charset=utf8&parseTime=True")
if err != nil {
log.Panic(err)
}
env := &config.Env{DB: db}
router := NewRouter(env)
log.Fatal(http.ListenAndServe(":8080", router))
}
Meu roteador:
func NewRouter(env *config.Env) *mux.Router {
router := mux.NewRouter().StrictSlash(true)
for _, route := range routes {
var handler http.Handler
handler = route.HandlerFunc
handler = Logger(handler, route.Name)
router.
Methods(route.Method).
Path(route.Pattern).
Name(route.Name).
Handler(handler)
}
return router
}
e minhas rotas:
type Route struct {
Name string
Method string
Pattern string
HandlerFunc http.HandlerFunc
}
type Routes []Route
var routes = Routes{
Route{
"Index",
"GET",
"/",
controller.Index,
},
Route{
"Show",
"GET",
"/todos/{todoId}",
controller.TodoShow,
},
Route{
"Create",
"POST",
"/todos",
controller.TodoCreate,
},
}
Então - como posso passar meu "env" (ou env.DB) para meus FuncHandlers? Eu tentei muitas coisas, mas nenhuma delas funcionou.