From cdbbe4bbf9c8a0e4dc1cb7111315e8eb0d23e13e Mon Sep 17 00:00:00 2001 From: masterelmar <18119527+masterElmar@users.noreply.github.com> Date: Wed, 13 Dec 2023 10:03:37 +0100 Subject: [PATCH] update:#82 added schedule for sport update --- backend/service/addRoute.go | 2 +- backend/service/addSchedule.go | 7 +++++++ backend/service/fetch/sport/sportFetcher.go | 8 +++++++- backend/service/functions/semester.go | 14 ++++++++++++++ 4 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 backend/service/functions/semester.go diff --git a/backend/service/addRoute.go b/backend/service/addRoute.go index 1029a28..422021e 100644 --- a/backend/service/addRoute.go +++ b/backend/service/addRoute.go @@ -61,7 +61,7 @@ func AddRoutes(app *pocketbase.PocketBase) { Path: "/api/fetch/sports", Handler: func(c echo.Context) error { - sportEvents := sport.RetrieveAndFetchAllSportCourses(app) + sportEvents := sport.FetchAndUpdateSportEvents(app) return c.JSON(200, sportEvents) }, Middlewares: []echo.MiddlewareFunc{ diff --git a/backend/service/addSchedule.go b/backend/service/addSchedule.go index bd0cd96..0b62f39 100644 --- a/backend/service/addSchedule.go +++ b/backend/service/addSchedule.go @@ -6,6 +6,7 @@ import ( "github.com/pocketbase/pocketbase/tools/cron" "htwkalender/service/course" "htwkalender/service/feed" + "htwkalender/service/fetch/sport" "htwkalender/service/functions/time" ) @@ -26,6 +27,12 @@ func AddSchedules(app *pocketbase.PocketBase) { // clean feeds older than 6 months feed.ClearFeeds(app.Dao(), 6, time.RealClock{}) }) + + // Every day at 2am update all Sport events (5 segments - minute, hour, day, month, weekday) "0 2 * * *" + scheduler.MustAdd("fetchEvents", "0 2 * * *", func() { + sport.FetchAndUpdateSportEvents(app) + }) + scheduler.Start() return nil }) diff --git a/backend/service/fetch/sport/sportFetcher.go b/backend/service/fetch/sport/sportFetcher.go index e71c285..ddc7377 100644 --- a/backend/service/fetch/sport/sportFetcher.go +++ b/backend/service/fetch/sport/sportFetcher.go @@ -7,6 +7,7 @@ import ( "github.com/pocketbase/pocketbase/tools/types" "htwkalender/model" "htwkalender/service/db" + "htwkalender/service/functions" "net/http" "regexp" "strconv" @@ -19,7 +20,7 @@ import ( // @TODO: add tests // @TODO: make it like a cron job to fetch the sport courses once a week -func RetrieveAndFetchAllSportCourses(app *pocketbase.PocketBase) []model.Event { +func FetchAndUpdateSportEvents(app *pocketbase.PocketBase) []model.Event { var sportCourseLinks = fetchAllAvailableSportCourses() sportEntries := fetchHTWKSportCourses(sportCourseLinks) @@ -55,6 +56,11 @@ func RetrieveAndFetchAllSportCourses(app *pocketbase.PocketBase) []model.Event { } } + err = db.DeleteAllEventsForCourse(app, "Sport", functions.GetCurrentSemesterString()) + if err != nil { + return nil + } + // save events to database savedEvents, err := db.SaveEvents(events, app) diff --git a/backend/service/functions/semester.go b/backend/service/functions/semester.go new file mode 100644 index 0000000..e0a457f --- /dev/null +++ b/backend/service/functions/semester.go @@ -0,0 +1,14 @@ +package functions + +import "time" + +// GetCurrentSemesterString returns the current semester as string +// if current month is between 10 and 03 -> winter semester "ws" +func GetCurrentSemesterString() string { + + if time.Now().Month() >= 10 || time.Now().Month() <= 3 { + return "ws" + } else { + return "ss" + } +}