feat:#150 rewrote error handling for backend

This commit is contained in:
masterelmar
2023-12-27 18:20:17 +01:00
parent 0b31002914
commit a9e76ee3db
4 changed files with 43 additions and 35 deletions

View File

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

View File

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

View File

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

View File

@@ -10,23 +10,39 @@ import (
)
func GetRooms(c echo.Context, app *pocketbase.PocketBase) error {
rooms := db.GetRooms(app)
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)
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)
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())
}