fix:#65 fixed fetching and deleting events in front

This commit is contained in:
Elmar Kresse
2024-03-11 03:33:14 +01:00
parent 1f99e26f80
commit 9f316c596a
5 changed files with 42 additions and 28 deletions

View File

@@ -65,7 +65,7 @@ func FetchAndUpdateSportEvents(app *pocketbase.PocketBase) ([]model.Event, error
}
// @TODO: delete and save events in one transaction and it only should delete events that are not in the new events list and save events that are not in the database
err = db.DeleteAllEventsForCourse(app, "Sport", functions.GetCurrentSemesterString())
err = db.DeleteAllEventsByCourse(app, "Sport", functions.GetCurrentSemesterString())
if err != nil {
return nil, err
}

View File

@@ -12,6 +12,7 @@ import (
localTime "htwkalender/service/functions/time"
"log/slog"
"strings"
"time"
)
func ParseEventsFromRemote(app *pocketbase.PocketBase) (model.Events, error) {
@@ -52,29 +53,38 @@ func FetchAllEventsAndSave(app *pocketbase.PocketBase, clock localTime.Clock) ([
"%0A?&template=sws_modul&weeks=1-65&combined=yes",
}
if (clock.Now().Month() >= 3) && (clock.Now().Month() <= 10) {
url := stubUrl[0] + "ss" + stubUrl[1]
var events []model.Event
events, err = parseEventForOneSemester(url)
if err != nil {
// append new error to err
// fmt.Errorf("failed to parse events for summmer semester: %w", err)
err = fmt.Errorf("failed to parse events for summmer semester: %w", err)
}
savedEvents, dbError := db.SaveEvents(events, app)
if dbError != nil {
// fmt.Errorf("failed to save events: %w", dbError)
err = fmt.Errorf("failed to save events: %w", dbError)
}
savedRecords = append(savedEvents, events...)
savedRecordsSs, errSs := fetchAndSaveAllEventsForSemester(app, time.March, time.October, "ss", clock, stubUrl)
if errSs == nil {
savedRecords = append(savedRecords, savedRecordsSs...)
}
savedRecordsWs, errWs := fetchAndSaveAllEventsForSemester(app, time.September, time.April, "ws", clock, stubUrl)
if errWs == nil {
savedRecords = append(savedRecords, savedRecordsWs...)
}
return savedRecords, err
}
if (clock.Now().Month() >= 9) || (clock.Now().Month() <= 4) {
url := stubUrl[0] + "ws" + stubUrl[1]
func fetchAndSaveAllEventsForSemester(
app *pocketbase.PocketBase,
before time.Month,
after time.Month,
semester string,
clock localTime.Clock,
stubUrl [2]string,
) ([]model.Event, error) {
var err error = nil
var savedRecords []model.Event
if (clock.Now().Month() >= after) || (clock.Now().Month() <= before) {
url := stubUrl[0] + semester + stubUrl[1]
var events []model.Event
events, err = parseEventForOneSemester(url)
if err != nil {
err = fmt.Errorf("failed to parse events for winter semester: %w", err)
err = fmt.Errorf("failed to parse events for "+semester+": %w", err)
}
err = db.DeleteAllEventsBySemester(app, semester)
if err != nil {
err = fmt.Errorf("failed to delete all events for "+semester+": %w", err)
}
savedEvents, dbError := db.SaveEvents(events, app)
if dbError != nil {