diff --git a/backend/service/db/dbEvents.go b/backend/service/db/dbEvents.go index e301f00..5042c2d 100644 --- a/backend/service/db/dbEvents.go +++ b/backend/service/db/dbEvents.go @@ -151,7 +151,7 @@ func buildIcalQueryForModules(modules []model.FeedCollection) dbx.Expression { // GetPlanForModules returns all events for the given modules with the given course // used for the ical feed -func GetPlanForModules(app *pocketbase.PocketBase, modules map[string]model.FeedCollection) model.Events { +func GetPlanForModules(app *pocketbase.PocketBase, modules map[string]model.FeedCollection) (model.Events, error) { var events model.Events @@ -174,12 +174,11 @@ func GetPlanForModules(app *pocketbase.PocketBase, modules map[string]model.Feed // get all events from event records in the events collection err := app.Dao().DB().Select("*").From("events").Where(selectedModulesQuery).All(&events) if err != nil { - print("Error while getting events from database: ", err) - return nil + return nil, err } } - return events + return events, nil } func GetAllModulesForCourse(app *pocketbase.PocketBase, course string, semester string) (model.Events, error) { @@ -200,7 +199,6 @@ func GetAllModulesDistinctByNameAndCourse(app *pocketbase.PocketBase) (model.Eve err := app.Dao().DB().Select("*").From("events").GroupBy("Name").Distinct(true).All(&events) if err != nil { - print("Error while getting events from database: ", err) return nil, err } @@ -211,10 +209,8 @@ func DeleteAllEventsForCourse(app *pocketbase.PocketBase, course string, semeste _, err := app.Dao().DB().Delete("events", dbx.NewExp("course = {:course} AND semester = {:semester}", dbx.Params{"course": course, "semester": semester})).Execute() if err != nil { - print("Error while deleting events from database: ", err) return err } - return nil } @@ -234,7 +230,6 @@ func FindModuleByUUID(app *pocketbase.PocketBase, uuid string) (model.Module, er err := app.Dao().DB().Select("*").From("events").Where(dbx.NewExp("uuid = {:uuid}", dbx.Params{"uuid": uuid})).One(&module) if err != nil { - print("Error while getting events from database: ", err) return model.Module{}, err } @@ -246,7 +241,6 @@ func FindAllEventsByModule(app *pocketbase.PocketBase, module model.Module) (mod err := app.Dao().DB().Select("*").From("events").Where(dbx.NewExp("Name = {:moduleName} AND course = {:course}", dbx.Params{"moduleName": module.Name, "course": module.Course})).All(&events) if err != nil { - print("Error while getting events from database: ", err) return nil, err } @@ -258,7 +252,6 @@ func GetAllModulesByNameAndDateRange(app *pocketbase.PocketBase, name string, st err := app.Dao().DB().Select("*").From("events").Where(dbx.NewExp("Name = {:name} AND Start >= {:startDate} AND End <= {:endDate}", dbx.Params{"name": name, "startDate": startDate, "endDate": endDate})).All(&events) if err != nil { - print("Error while getting events from database: ", err) return nil, err } diff --git a/backend/service/db/dbRooms.go b/backend/service/db/dbRooms.go index 6d6aebe..be2ee41 100644 --- a/backend/service/db/dbRooms.go +++ b/backend/service/db/dbRooms.go @@ -1,7 +1,6 @@ package db import ( - "fmt" "htwkalender/model" "htwkalender/service/functions" "strings" @@ -11,7 +10,7 @@ import ( "github.com/pocketbase/pocketbase" ) -func GetRooms(app *pocketbase.PocketBase) []string { +func GetRooms(app *pocketbase.PocketBase) ([]string, error) { var events []struct { Rooms string `db:"Rooms" json:"Rooms"` @@ -20,8 +19,7 @@ func GetRooms(app *pocketbase.PocketBase) []string { // get all rooms from event records in the events collection err := app.Dao().DB().Select("Rooms").From("events").All(&events) if err != nil { - print("Error while getting rooms from database: ", err) - return nil + return nil, err } var roomArray []string @@ -38,10 +36,10 @@ func GetRooms(app *pocketbase.PocketBase) []string { } } } - return roomArray + return roomArray, nil } -func GetRoomScheduleForDay(app *pocketbase.PocketBase, room string, date string) []model.Event { +func GetRoomScheduleForDay(app *pocketbase.PocketBase, room string, date string) ([]model.Event, error) { var events []model.Event // get all events from event records in the events collection @@ -51,24 +49,21 @@ func GetRoomScheduleForDay(app *pocketbase.PocketBase, room string, date string) GroupBy("Week", "Start", "End", "Rooms"). All(&events) if err != nil { - print("Error while getting events from database: ", err) - return nil + return nil, err } - return events + return events, nil } -func GetRoomSchedule(app *pocketbase.PocketBase, room string, from string, to string) []model.Event { +func GetRoomSchedule(app *pocketbase.PocketBase, room string, from string, to string) ([]model.Event, error) { var events []model.Event fromDate, err := time.Parse("2006-01-02", from) if err != nil { - fmt.Println("Error parsing date 'from':", err) - return nil + return nil, err } toDate, err := time.Parse("2006-01-02", to) if err != nil { - fmt.Println("Error parsing date 'to':", err) - return nil + return nil, err } // get all events from event records in the events collection @@ -79,8 +74,7 @@ func GetRoomSchedule(app *pocketbase.PocketBase, room string, from string, to st All(&events) if err != nil { - print("Error while getting events from database: ", err) - return nil + return nil, err } - return events + return events, nil } diff --git a/backend/service/ical/ical.go b/backend/service/ical/ical.go index 4fa472b..ad788e6 100644 --- a/backend/service/ical/ical.go +++ b/backend/service/ical/ical.go @@ -48,7 +48,12 @@ func Feed(c echo.Context, app *pocketbase.PocketBase, token string) error { } func createFeedForToken(app *pocketbase.PocketBase, modules map[string]model.FeedCollection) (*model.FeedModel, error) { - res := db.GetPlanForModules(app, modules) + res, err := db.GetPlanForModules(app, modules) + + if err != nil { + return nil, apis.NewNotFoundError("Could not fetch events", err) + } + b := bytes.Buffer{} goics.NewICalEncode(&b).Encode(IcalModel{Events: res, Mapping: modules}) feed := &model.FeedModel{Content: b.String(), ExpiresAt: time.Now().Add(expirationTime)} diff --git a/backend/service/room/roomService.go b/backend/service/room/roomService.go index 320bfea..5fcc80b 100644 --- a/backend/service/room/roomService.go +++ b/backend/service/room/roomService.go @@ -10,23 +10,39 @@ import ( ) func GetRooms(c echo.Context, app *pocketbase.PocketBase) error { - rooms := db.GetRooms(app) - return c.JSON(http.StatusOK, rooms) + rooms, err := db.GetRooms(app) + + if err != nil { + return c.JSON(http.StatusNotFound, err) + } else { + return c.JSON(http.StatusOK, rooms) + } } func GetRoomScheduleForDay(c echo.Context, app *pocketbase.PocketBase, room string, date string) error { - events := db.GetRoomScheduleForDay(app, room, date) - return c.JSON(http.StatusOK, anonymizeRooms(events)) + + events, err := db.GetRoomScheduleForDay(app, room, date) + + if err != nil { + return c.JSON(http.StatusInternalServerError, err) + } else { + return c.JSON(http.StatusOK, anonymizeRooms(events)) + } } func GetRoomSchedule(c echo.Context, app *pocketbase.PocketBase, room string, from string, to string) error { - events := db.GetRoomSchedule(app, room, from, to) - return c.JSON(http.StatusOK, anonymizeRooms(events)) + events, err := db.GetRoomSchedule(app, room, from, to) + + if err != nil { + return c.JSON(http.StatusInternalServerError, err) + } else { + return c.JSON(http.StatusOK, anonymizeRooms(events)) + } } // Transform the events to anonymized events throwing away all unnecessary information func anonymizeRooms(events []model.Event) []model.AnonymizedEventDTO { - var anonymizedEvents = []model.AnonymizedEventDTO{} + var anonymizedEvents []model.AnonymizedEventDTO for _, event := range events { anonymizedEvents = append(anonymizedEvents, event.AnonymizeEvent()) }