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.AddRoutes(app)
|
||||||
|
|
||||||
|
service.AddSchedules(app)
|
||||||
|
|
||||||
if err := app.Start(); err != nil {
|
if err := app.Start(); err != nil {
|
||||||
log.Fatal(err)
|
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 {
|
Handler: func(c echo.Context) error {
|
||||||
course := c.QueryParam("course")
|
course := c.QueryParam("course")
|
||||||
semester := c.QueryParam("semester")
|
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{
|
Middlewares: []echo.MiddlewareFunc{
|
||||||
apis.ActivityLogger(app),
|
apis.ActivityLogger(app),
|
||||||
@@ -161,12 +167,61 @@ func AddRoutes(app *pocketbase.PocketBase) {
|
|||||||
return nil
|
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 {
|
app.OnBeforeServe().Add(func(e *core.ServeEvent) error {
|
||||||
_, err := e.Router.AddRoute(echo.Route{
|
_, err := e.Router.AddRoute(echo.Route{
|
||||||
Method: http.MethodGet,
|
Method: http.MethodGet,
|
||||||
Path: "/api/courses",
|
Path: "/api/courses",
|
||||||
Handler: func(c echo.Context) error {
|
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{
|
Middlewares: []echo.MiddlewareFunc{
|
||||||
apis.ActivityLogger(app),
|
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)
|
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)
|
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)
|
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 i, group := range groups {
|
||||||
for j, event := range group.Events {
|
for j, event := range group.Events {
|
||||||
if event.Name == "" {
|
if event.Name == "" {
|
||||||
@@ -52,7 +52,7 @@ func replaceEmptyEventNames(groups []model.SeminarGroup) []model.SeminarGroup {
|
|||||||
return groups
|
return groups
|
||||||
}
|
}
|
||||||
|
|
||||||
func clearEmptySeminarGroups(seminarGroups []model.SeminarGroup) []model.SeminarGroup {
|
func ClearEmptySeminarGroups(seminarGroups []model.SeminarGroup) []model.SeminarGroup {
|
||||||
var newSeminarGroups []model.SeminarGroup
|
var newSeminarGroups []model.SeminarGroup
|
||||||
for _, seminarGroup := range seminarGroups {
|
for _, seminarGroup := range seminarGroups {
|
||||||
if len(seminarGroup.Events) > 0 && seminarGroup.Course != "" {
|
if len(seminarGroup.Events) > 0 && seminarGroup.Course != "" {
|
||||||
|
@@ -113,8 +113,8 @@ func Test_replaceEmptyEventNames(t *testing.T) {
|
|||||||
}
|
}
|
||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
t.Run(tt.name, func(t *testing.T) {
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
if got := replaceEmptyEventNames(tt.args.groups); !reflect.DeepEqual(got, tt.want) {
|
if got := ReplaceEmptyEventNames(tt.args.groups); !reflect.DeepEqual(got, tt.want) {
|
||||||
t.Errorf("replaceEmptyEventNames() = %v, want %v", got, tt.want)
|
t.Errorf("ReplaceEmptyEventNames() = %v, want %v", got, tt.want)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
export class Module {
|
export class Module {
|
||||||
constructor(
|
constructor(
|
||||||
|
public Id: string,
|
||||||
public Name: string,
|
public Name: string,
|
||||||
public Course: string,
|
public Course: string,
|
||||||
public UserDefinedName: string,
|
public UserDefinedName: string,
|
||||||
|
Reference in New Issue
Block a user