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 // GetPlanForModules returns all events for the given modules with the given course
// used for the ical feed // 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 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 // get all events from event records in the events collection
err := app.Dao().DB().Select("*").From("events").Where(selectedModulesQuery).All(&events) err := app.Dao().DB().Select("*").From("events").Where(selectedModulesQuery).All(&events)
if err != nil { if err != nil {
print("Error while getting events from database: ", err) return nil, err
return nil
} }
} }
return events return events, nil
} }
func GetAllModulesForCourse(app *pocketbase.PocketBase, course string, semester string) (model.Events, error) { 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) err := app.Dao().DB().Select("*").From("events").GroupBy("Name").Distinct(true).All(&events)
if err != nil { if err != nil {
print("Error while getting events from database: ", err)
return nil, 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() _, err := app.Dao().DB().Delete("events", dbx.NewExp("course = {:course} AND semester = {:semester}", dbx.Params{"course": course, "semester": semester})).Execute()
if err != nil { if err != nil {
print("Error while deleting events from database: ", err)
return err return err
} }
return nil 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) err := app.Dao().DB().Select("*").From("events").Where(dbx.NewExp("uuid = {:uuid}", dbx.Params{"uuid": uuid})).One(&module)
if err != nil { if err != nil {
print("Error while getting events from database: ", err)
return model.Module{}, 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) 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 { if err != nil {
print("Error while getting events from database: ", err)
return nil, 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) 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 { if err != nil {
print("Error while getting events from database: ", err)
return nil, err return nil, err
} }

View File

@@ -1,7 +1,6 @@
package db package db
import ( import (
"fmt"
"htwkalender/model" "htwkalender/model"
"htwkalender/service/functions" "htwkalender/service/functions"
"strings" "strings"
@@ -11,7 +10,7 @@ import (
"github.com/pocketbase/pocketbase" "github.com/pocketbase/pocketbase"
) )
func GetRooms(app *pocketbase.PocketBase) []string { func GetRooms(app *pocketbase.PocketBase) ([]string, error) {
var events []struct { var events []struct {
Rooms string `db:"Rooms" json:"Rooms"` 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 // get all rooms from event records in the events collection
err := app.Dao().DB().Select("Rooms").From("events").All(&events) err := app.Dao().DB().Select("Rooms").From("events").All(&events)
if err != nil { if err != nil {
print("Error while getting rooms from database: ", err) return nil, err
return nil
} }
var roomArray []string 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 var events []model.Event
// get all events from event records in the events collection // 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"). GroupBy("Week", "Start", "End", "Rooms").
All(&events) All(&events)
if err != nil { if err != nil {
print("Error while getting events from database: ", err) return nil, err
return nil
} }
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 var events []model.Event
fromDate, err := time.Parse("2006-01-02", from) fromDate, err := time.Parse("2006-01-02", from)
if err != nil { if err != nil {
fmt.Println("Error parsing date 'from':", err) return nil, err
return nil
} }
toDate, err := time.Parse("2006-01-02", to) toDate, err := time.Parse("2006-01-02", to)
if err != nil { if err != nil {
fmt.Println("Error parsing date 'to':", err) return nil, err
return nil
} }
// get all events from event records in the events collection // 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) All(&events)
if err != nil { if err != nil {
print("Error while getting events from database: ", err) return nil, err
return nil
} }
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) { 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{} b := bytes.Buffer{}
goics.NewICalEncode(&b).Encode(IcalModel{Events: res, Mapping: modules}) goics.NewICalEncode(&b).Encode(IcalModel{Events: res, Mapping: modules})
feed := &model.FeedModel{Content: b.String(), ExpiresAt: time.Now().Add(expirationTime)} 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 { 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) return c.JSON(http.StatusOK, rooms)
} }
}
func GetRoomScheduleForDay(c echo.Context, app *pocketbase.PocketBase, room string, date string) error { 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)) return c.JSON(http.StatusOK, anonymizeRooms(events))
} }
}
func GetRoomSchedule(c echo.Context, app *pocketbase.PocketBase, room string, from string, to string) error { 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)) return c.JSON(http.StatusOK, anonymizeRooms(events))
} }
}
// Transform the events to anonymized events throwing away all unnecessary information // Transform the events to anonymized events throwing away all unnecessary information
func anonymizeRooms(events []model.Event) []model.AnonymizedEventDTO { func anonymizeRooms(events []model.Event) []model.AnonymizedEventDTO {
var anonymizedEvents = []model.AnonymizedEventDTO{} var anonymizedEvents []model.AnonymizedEventDTO
for _, event := range events { for _, event := range events {
anonymizedEvents = append(anonymizedEvents, event.AnonymizeEvent()) anonymizedEvents = append(anonymizedEvents, event.AnonymizeEvent())
} }