mirror of
https://gitlab.dit.htwk-leipzig.de/htwk-software/htwkalender.git
synced 2025-08-02 09:49:13 +02:00
added schedule for updating all modules
This commit is contained in:
@@ -24,6 +24,8 @@ func main() {
|
||||
|
||||
service.AddRoutes(app)
|
||||
|
||||
service.AddSchedules(app)
|
||||
|
||||
if err := app.Start(); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
9
backend/model/moduleModel.go
Normal file
9
backend/model/moduleModel.go
Normal file
@@ -0,0 +1,9 @@
|
||||
package model
|
||||
|
||||
type Module struct {
|
||||
Name string `json:"name"`
|
||||
Prof string `json:"prof"`
|
||||
Course string `json:"course"`
|
||||
Semester string `json:"semester"`
|
||||
Events Events `json:"events"`
|
||||
}
|
@@ -132,7 +132,13 @@ func AddRoutes(app *pocketbase.PocketBase) {
|
||||
Handler: func(c echo.Context) error {
|
||||
course := c.QueryParam("course")
|
||||
semester := c.QueryParam("semester")
|
||||
return events.GetModulesForCourseDistinct(app, c, course, semester)
|
||||
modules, err := events.GetModulesForCourseDistinct(app, course, semester)
|
||||
|
||||
if err != nil {
|
||||
return c.JSON(400, err)
|
||||
} else {
|
||||
return c.JSON(200, modules)
|
||||
}
|
||||
},
|
||||
Middlewares: []echo.MiddlewareFunc{
|
||||
apis.ActivityLogger(app),
|
||||
@@ -161,12 +167,61 @@ 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/module",
|
||||
Handler: func(c echo.Context) error {
|
||||
name := c.QueryParam("name")
|
||||
module, err := events.GetModuleByName(app, name)
|
||||
|
||||
if err != nil {
|
||||
return c.JSON(400, err)
|
||||
} else {
|
||||
return c.JSON(200, module)
|
||||
}
|
||||
},
|
||||
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)
|
||||
courses := events.GetAllCourses(app)
|
||||
return c.JSON(200, courses)
|
||||
},
|
||||
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.MethodDelete,
|
||||
Path: "/api/events",
|
||||
Handler: func(c echo.Context) error {
|
||||
course := c.QueryParam("course")
|
||||
semester := c.QueryParam("semester")
|
||||
err := events.DeleteAllEventsByCourseAndSemester(app, course, semester)
|
||||
if err != nil {
|
||||
return c.JSON(400, err)
|
||||
} else {
|
||||
return c.JSON(200, "Events deleted")
|
||||
}
|
||||
},
|
||||
Middlewares: []echo.MiddlewareFunc{
|
||||
apis.ActivityLogger(app),
|
||||
|
37
backend/service/addSchedule.go
Normal file
37
backend/service/addSchedule.go
Normal file
@@ -0,0 +1,37 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"github.com/pocketbase/pocketbase"
|
||||
"github.com/pocketbase/pocketbase/core"
|
||||
"github.com/pocketbase/pocketbase/tools/cron"
|
||||
"htwkalender/service/events"
|
||||
"log"
|
||||
)
|
||||
|
||||
func AddSchedules(app *pocketbase.PocketBase) {
|
||||
|
||||
app.OnBeforeServe().Add(func(e *core.ServeEvent) error {
|
||||
scheduler := cron.New()
|
||||
|
||||
scheduler.MustAdd("updateCourse", "*/60 * * * *", func() {
|
||||
|
||||
courses := events.GetAllCourses(app)
|
||||
|
||||
for _, course := range courses {
|
||||
err := events.UpdateModulesForCourse(app, course)
|
||||
if err != nil {
|
||||
log.Println("Update Course: " + course + " failed")
|
||||
log.Println(err)
|
||||
} else {
|
||||
log.Println("Update Course: " + course + " successful")
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
scheduler.Start()
|
||||
|
||||
return nil
|
||||
})
|
||||
|
||||
}
|
@@ -28,9 +28,9 @@ func GetSeminarEvents(c echo.Context, app *pocketbase.PocketBase) error {
|
||||
return apis.NewNotFoundError("Collection not found", dbError)
|
||||
}
|
||||
|
||||
seminarGroups = clearEmptySeminarGroups(seminarGroups)
|
||||
seminarGroups = ClearEmptySeminarGroups(seminarGroups)
|
||||
|
||||
seminarGroups = replaceEmptyEventNames(seminarGroups)
|
||||
seminarGroups = ReplaceEmptyEventNames(seminarGroups)
|
||||
|
||||
savedRecords, dbError := db.SaveEvents(seminarGroups, collection, app)
|
||||
|
||||
@@ -41,7 +41,7 @@ func GetSeminarEvents(c echo.Context, app *pocketbase.PocketBase) error {
|
||||
return c.JSON(http.StatusOK, savedRecords)
|
||||
}
|
||||
|
||||
func replaceEmptyEventNames(groups []model.SeminarGroup) []model.SeminarGroup {
|
||||
func ReplaceEmptyEventNames(groups []model.SeminarGroup) []model.SeminarGroup {
|
||||
for i, group := range groups {
|
||||
for j, event := range group.Events {
|
||||
if event.Name == "" {
|
||||
@@ -52,7 +52,7 @@ func replaceEmptyEventNames(groups []model.SeminarGroup) []model.SeminarGroup {
|
||||
return groups
|
||||
}
|
||||
|
||||
func clearEmptySeminarGroups(seminarGroups []model.SeminarGroup) []model.SeminarGroup {
|
||||
func ClearEmptySeminarGroups(seminarGroups []model.SeminarGroup) []model.SeminarGroup {
|
||||
var newSeminarGroups []model.SeminarGroup
|
||||
for _, seminarGroup := range seminarGroups {
|
||||
if len(seminarGroup.Events) > 0 && seminarGroup.Course != "" {
|
||||
|
@@ -113,8 +113,8 @@ func Test_replaceEmptyEventNames(t *testing.T) {
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
if got := replaceEmptyEventNames(tt.args.groups); !reflect.DeepEqual(got, tt.want) {
|
||||
t.Errorf("replaceEmptyEventNames() = %v, want %v", got, tt.want)
|
||||
if got := ReplaceEmptyEventNames(tt.args.groups); !reflect.DeepEqual(got, tt.want) {
|
||||
t.Errorf("ReplaceEmptyEventNames() = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@@ -1,5 +1,6 @@
|
||||
export class Module {
|
||||
constructor(
|
||||
public Id: string,
|
||||
public Name: string,
|
||||
public Course: string,
|
||||
public UserDefinedName: string,
|
||||
|
Reference in New Issue
Block a user