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) }