update for frontend

This commit is contained in:
Elmar Kresse
2023-09-10 10:39:00 +02:00
parent 991d069931
commit eeb84db0cc
6 changed files with 114 additions and 6 deletions

View File

@ -5,6 +5,7 @@ import (
"github.com/pocketbase/pocketbase"
"github.com/pocketbase/pocketbase/apis"
"github.com/pocketbase/pocketbase/core"
"htwk-planner/service/events"
"htwk-planner/service/fetch"
"htwk-planner/service/ical"
"htwk-planner/service/room"
@ -75,8 +76,8 @@ func addRoutes(app *pocketbase.PocketBase) {
Method: http.MethodGet,
Path: "/api/feedURL",
Handler: func(c echo.Context) error {
course := c.Request().Header.Get("course")
semester := c.Request().Header.Get("semester")
course := c.QueryParam("course")
semester := c.QueryParam("semester")
return ical.FeedURL(c, app, course, semester)
},
Middlewares: []echo.MiddlewareFunc{
@ -107,4 +108,39 @@ func addRoutes(app *pocketbase.PocketBase) {
return nil
})
app.OnBeforeServe().Add(func(e *core.ServeEvent) error {
_, err := e.Router.AddRoute(echo.Route{
Method: http.MethodGet,
Path: "/api/modules",
Handler: func(c echo.Context) error {
course := c.QueryParam("course")
semester := c.QueryParam("semester")
return events.GetModulesForCourseDistinct(app, c, course, semester)
},
Middlewares: []echo.MiddlewareFunc{
apis.ActivityLogger(app),
},
})
if err != nil {
return err
}
return nil
})
app.OnBeforeServe().Add(func(e *core.ServeEvent) error {
_, err := e.Router.AddRoute(echo.Route{
Method: http.MethodGet,
Path: "/api/courses",
Handler: func(c echo.Context) error {
return events.GetAllCourses(app, c)
},
Middlewares: []echo.MiddlewareFunc{
apis.ActivityLogger(app),
},
})
if err != nil {
return err
}
return nil
})
}

View File

@ -113,3 +113,23 @@ func GetPlanForCourseAndSemester(app *pocketbase.PocketBase, course string, seme
}
return events
}
func GetAllModulesForCourse(app *pocketbase.PocketBase, course string, semester string) ([]string, error) {
var events []struct {
Name string `db:"Name" json:"Name"`
}
var eventArray []string
// get all events from event records in the events collection
err := app.Dao().DB().Select("Name").From("events").Where(dbx.NewExp("course = {:course} AND semester = {:semester}", dbx.Params{"course": course, "semester": semester})).Distinct(true).All(&events)
if err != nil {
print("Error while getting events from database: ", err)
return eventArray, err
}
for _, event := range events {
eventArray = append(eventArray, event.Name)
}
return eventArray, nil
}

View File

@ -25,7 +25,7 @@ func SaveGroups(seminarGroup []model.SeminarGroup, collection *models.Collection
func GetAllCourses(app *pocketbase.PocketBase) []string {
var courses []struct {
Rooms string `db:"course" json:"course"`
CourseShortcut string `db:"course" json:"course"`
}
// get all rooms from event records in the events collection
@ -37,8 +37,8 @@ func GetAllCourses(app *pocketbase.PocketBase) []string {
var courseArray []string
for _, room := range courses {
courseArray = append(courseArray, room.Rooms)
for _, course := range courses {
courseArray = append(courseArray, course.CourseShortcut)
}
return courseArray

View File

@ -0,0 +1,12 @@
package events
import (
"github.com/labstack/echo/v5"
"github.com/pocketbase/pocketbase"
"htwk-planner/service/db"
)
func GetAllCourses(app *pocketbase.PocketBase, c echo.Context) error {
courses := db.GetAllCourses(app)
return c.JSON(200, courses)
}

View File

@ -0,0 +1,40 @@
package events
import (
"github.com/labstack/echo/v5"
"github.com/pocketbase/pocketbase"
"htwk-planner/service/db"
"unicode"
)
func GetModulesForCourseDistinct(app *pocketbase.PocketBase, c echo.Context, course string, semester string) error {
modules, err := db.GetAllModulesForCourse(app, course, semester)
replaceEmptyEntry(modules, "Sonderveranstaltungen")
if err != nil {
return c.JSON(400, err)
} else {
return c.JSON(200, modules)
}
}
func replaceEmptyEntry(courses []string, replacement string) {
//replace empty string with "Sonderveranstaltungen"
for i, course := range courses {
if checkIfOnlyWhitespace(course) {
courses[i] = replacement
}
}
}
// check if course is empty or contains only whitespaces
func checkIfOnlyWhitespace(word string) bool {
for _, letter := range word {
if !unicode.IsSpace(letter) || !(letter == int32(160)) {
return false
}
}
return true
}

View File

@ -23,7 +23,7 @@ func FeedURL(c echo.Context, app *pocketbase.PocketBase, course string, semester
if err != nil {
return err
}
return c.JSON(http.StatusOK, fmt.Sprintf("FeedToken: %s", token))
return c.JSON(http.StatusOK, fmt.Sprintf("FeedToken: %s, Course: %s, Semester: %s", token, course, semester))
}
func Feed(c echo.Context, app *pocketbase.PocketBase, token string) error {