package main import ( "api/src/middleware" "api/src/utils" "api/src/workout" "database/sql" "log" "net/http" _ "github.com/mattn/go-sqlite3" "github.com/prometheus/client_golang/prometheus/promhttp" ) func main() { log.Println("Starting server...") db, err := sql.Open("sqlite3", "./data.db") if err != nil { log.Fatal("Could not open Database data.db: ", err) } defer db.Close() utils.RunMigrations(db) var prometheusServer = http.Server{ Addr: ":8081", Handler: promhttp.Handler(), } go func() { log.Println("Starting prometheus server at", prometheusServer.Addr) err := prometheusServer.ListenAndServe() if err != nil { panic(err) } }() var router = getRouter(db) var server = http.Server{ Addr: ":8080", Handler: middleware.Logging(middleware.EnableCors(middleware.EnsureAuth(router))), } log.Println("Starting server at", server.Addr) err = server.ListenAndServe() if err != nil { panic(err) } } func getRouter(db *sql.DB) *http.ServeMux { var router = http.NewServeMux() router.HandleFunc("POST /workout", workout.NewWorkout(db)) router.HandleFunc("GET /workout", workout.GetWorkouts(db)) router.HandleFunc("DELETE /workout", workout.DeleteWorkout(db)) return router }