50 lines
1.4 KiB
Go
50 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"database/sql"
|
|
"log"
|
|
"log/syslog"
|
|
"net/http"
|
|
"os"
|
|
"sprechstundentool/controllers"
|
|
"sprechstundentool/repositories"
|
|
"sprechstundentool/sqldb"
|
|
"strings"
|
|
)
|
|
|
|
func main() {
|
|
logwriter, e := syslog.New(syslog.LOG_ERR, "sprechstunden")
|
|
if e == nil {
|
|
log.SetOutput(logwriter)
|
|
}
|
|
|
|
var db *sql.DB
|
|
switch os.Getenv("ohtDbType") {
|
|
case "mysql":
|
|
db = sqldb.ConnectMysql(os.Getenv("ohtDbMysqlConnection"))
|
|
default:
|
|
if os.Getenv("ohtDbFile") != "" && !strings.Contains(os.Getenv("ohtDbFile"), "/") {
|
|
db = sqldb.ConnectSQLite(os.Getenv("ohtDbFile"))
|
|
} else {
|
|
db = sqldb.ConnectSQLite("sprechstunden.db")
|
|
}
|
|
}
|
|
|
|
// Create repos
|
|
roomRepo := repositories.NewRoomRepo(db)
|
|
courseRepo := repositories.NewCourseRepo(db)
|
|
tutorRepo := repositories.NewTutorRepo(db)
|
|
officeHourRepo := repositories.NewOfficeHourRepo(db, roomRepo, tutorRepo, courseRepo)
|
|
requestRepo := repositories.NewRequestRepo(db, officeHourRepo)
|
|
h := controllers.NewBaseHandler(roomRepo, officeHourRepo, courseRepo, tutorRepo, requestRepo)
|
|
|
|
http.HandleFunc("/getByRoom", h.GetByRoomHandler)
|
|
http.HandleFunc("/getByCourse", h.GetByCourseHandler)
|
|
http.HandleFunc("/addOfficeHour", h.AddOfficeHourHandler)
|
|
http.HandleFunc("/confirmRequest", h.ConfirmRequestHandler)
|
|
http.HandleFunc("/deleteOfficeHour", h.DeleteOfficeHourHandler)
|
|
http.HandleFunc("/", h.RootHandler)
|
|
|
|
http.ListenAndServe(":8080", nil)
|
|
}
|