mirror of
https://gitlab.dit.htwk-leipzig.de/htwk-software/htwkalender.git
synced 2025-08-02 17:59:14 +02:00
feat:#150 rewrote error handling for backend
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
|
@@ -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
|
||||
}
|
||||
|
@@ -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)}
|
||||
|
@@ -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())
|
||||
}
|
||||
|
Reference in New Issue
Block a user