added schedule for updating all modules

This commit is contained in:
Elmar Kresse
2023-10-01 13:30:19 +02:00
parent f982feec4f
commit f89416170d
7 changed files with 112 additions and 8 deletions

View File

@@ -24,6 +24,8 @@ func main() {
service.AddRoutes(app)
service.AddSchedules(app)
if err := app.Start(); err != nil {
log.Fatal(err)
}

View 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"`
}

View File

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

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

View File

@@ -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 != "" {

View File

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

View File

@@ -1,5 +1,6 @@
export class Module {
constructor(
public Id: string,
public Name: string,
public Course: string,
public UserDefinedName: string,