Ir usando mux Router - Cómo pasar mi DB a mis controladores
En este momento, trato de crear un pequeño proyecto web usando Go para el manejo de datos en el servidor.
Intento pasar mi conexión de base de datos a mis HandlerFunc (opciones) pero no funciona como se esperaba. Soy bastante nuevo en Golang, así que tal vez no entendí algunos principios básicos de este idioma.
Mi función principal se ve así:
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))
}
Mi enrutador:
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
}
y mis rutas:
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,
},
}
Entonces, ¿cómo puedo pasar mi "env" (o env.DB) a mis FuncHandlers? Intenté muchas cosas, pero ninguna funcionó.