sprechstunden-go/main.go

63 lines
1.7 KiB
Go
Raw Normal View History

// main
2022-08-24 06:16:27 +00:00
package main
import (
"flag"
"fmt"
"log"
2022-08-24 06:16:27 +00:00
"net/http"
"officeHours/config"
"officeHours/controllers"
"officeHours/repositories"
"officeHours/sqldb"
"officeHours/templating"
"os"
2022-08-24 06:16:27 +00:00
)
2022-08-29 20:58:19 +00:00
func main() {
configFile := flag.String(
"config",
"config/config.json",
"File path to the configuration file")
flag.Parse()
if *configFile == "" {
flag.Usage()
os.Exit(1)
}
var conf config.Config
err := config.ReadConfigFile(*configFile, &conf)
if err != nil {
log.Fatalf("%s: %s", "Reading JSON config file into config structure", err)
}
2022-08-24 06:16:27 +00:00
// serve static files
staticHandler := http.FileServer(http.Dir("./static"))
// parse templates
if err = templating.InitTemplates(); err != nil {
2022-09-26 10:42:08 +00:00
log.Fatal(err.Error())
}
// database connection
db, err := sqldb.Connect(conf)
if err != nil {
2022-09-26 10:42:08 +00:00
log.Fatal(err.Error())
}
2022-08-29 20:58:19 +00:00
// Create repos
roomRepo := repositories.NewRoomRepo(db)
courseRepo := repositories.NewCourseRepo(db)
tutorRepo := repositories.NewTutorRepo(db)
officeHourRepo := repositories.NewOfficeHourRepo(db, roomRepo, tutorRepo, courseRepo, conf)
requestRepo := repositories.NewRequestRepo(db, officeHourRepo, conf)
h := controllers.NewBaseHandler(roomRepo, officeHourRepo, courseRepo, tutorRepo, requestRepo, conf)
2022-08-24 06:16:27 +00:00
2022-08-29 20:58:19 +00:00
http.HandleFunc("/getByRoom", h.GetByRoomHandler)
http.HandleFunc("/getByCourse", h.GetByCourseHandler)
http.HandleFunc("/addOfficeHour", h.AddOfficeHourHandler)
http.HandleFunc("/confirmRequest", h.ConfirmRequestHandler)
2022-09-05 18:10:35 +00:00
http.HandleFunc("/deleteOfficeHour", h.DeleteOfficeHourHandler)
2022-08-29 20:58:19 +00:00
http.HandleFunc("/", h.RootHandler)
http.Handle("/static/", http.StripPrefix("/static/", staticHandler))
2022-08-24 06:16:27 +00:00
err = http.ListenAndServe(fmt.Sprintf("%s:%d", conf.Server.ListenAddress, conf.Server.ListenPort), nil)
2022-09-26 10:42:08 +00:00
log.Fatal(err.Error())
2022-08-24 06:16:27 +00:00
}