package handler import ( "me-fit/db" "me-fit/middleware" "me-fit/service" "me-fit/types" "database/sql" "net/http" ) func GetHandler(d *sql.DB, serverSettings *types.ServerSettings) http.Handler { var router = http.NewServeMux() randomGenerator := service.NewRandomGeneratorImpl() clock := service.NewClockImpl() dbAuth := db.NewDbAuthSqlite(d) dbWorkout := db.NewDbWorkoutSqlite(d) mailService := service.NewMailServiceImpl(serverSettings) serviceAuth := service.NewServiceAuthImpl(dbAuth, randomGenerator, clock, mailService, serverSettings) serviceWorkout := service.NewServiceWorkoutImpl(dbWorkout, randomGenerator, clock, mailService, serverSettings) handlerIndex := NewHandlerIndex(d, serviceAuth, serverSettings) handlerAuth := NewHandlerAuth(d, serviceAuth, serverSettings) handlerWorkout := NewHandlerWorkout(d, serviceWorkout, serviceAuth, serverSettings) handlerIndex.handle(router) // Serve static files (CSS, JS and images) router.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("./static/")))) handlerWorkout.handle(router) handlerAuth.handle(router) return middleware.Logging(middleware.EnableCors(serverSettings, router)) }