update:#82 added schedule for sport update

This commit is contained in:
masterelmar
2023-12-13 10:03:37 +01:00
parent 4572541d65
commit cdbbe4bbf9
4 changed files with 29 additions and 2 deletions

View File

@@ -61,7 +61,7 @@ func AddRoutes(app *pocketbase.PocketBase) {
Path: "/api/fetch/sports", Path: "/api/fetch/sports",
Handler: func(c echo.Context) error { Handler: func(c echo.Context) error {
sportEvents := sport.RetrieveAndFetchAllSportCourses(app) sportEvents := sport.FetchAndUpdateSportEvents(app)
return c.JSON(200, sportEvents) return c.JSON(200, sportEvents)
}, },
Middlewares: []echo.MiddlewareFunc{ Middlewares: []echo.MiddlewareFunc{

View File

@@ -6,6 +6,7 @@ import (
"github.com/pocketbase/pocketbase/tools/cron" "github.com/pocketbase/pocketbase/tools/cron"
"htwkalender/service/course" "htwkalender/service/course"
"htwkalender/service/feed" "htwkalender/service/feed"
"htwkalender/service/fetch/sport"
"htwkalender/service/functions/time" "htwkalender/service/functions/time"
) )
@@ -26,6 +27,12 @@ func AddSchedules(app *pocketbase.PocketBase) {
// clean feeds older than 6 months // clean feeds older than 6 months
feed.ClearFeeds(app.Dao(), 6, time.RealClock{}) 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() scheduler.Start()
return nil return nil
}) })

View File

@@ -7,6 +7,7 @@ import (
"github.com/pocketbase/pocketbase/tools/types" "github.com/pocketbase/pocketbase/tools/types"
"htwkalender/model" "htwkalender/model"
"htwkalender/service/db" "htwkalender/service/db"
"htwkalender/service/functions"
"net/http" "net/http"
"regexp" "regexp"
"strconv" "strconv"
@@ -19,7 +20,7 @@ import (
// @TODO: add tests // @TODO: add tests
// @TODO: make it like a cron job to fetch the sport courses once a week // @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() var sportCourseLinks = fetchAllAvailableSportCourses()
sportEntries := fetchHTWKSportCourses(sportCourseLinks) 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 // save events to database
savedEvents, err := db.SaveEvents(events, app) savedEvents, err := db.SaveEvents(events, app)

View File

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