diff --git a/services/data-manager/service/db/dbEvents.go b/services/data-manager/service/db/dbEvents.go index 7c7c174..95b5698 100644 --- a/services/data-manager/service/db/dbEvents.go +++ b/services/data-manager/service/db/dbEvents.go @@ -213,6 +213,19 @@ func GetAllEventsForCourse(app *pocketbase.PocketBase, course string) (model.Eve return events, nil } +func GetAllEventsForCourseAndSemester(app *pocketbase.PocketBase, course string, semester string) (model.Events, error) { + var events model.Events + + // get all events from event records in the events collection + err := app.Dao().DB().Select("*").From("events").Where(dbx.NewExp("course = {:course} AND semester = {:semester}", dbx.Params{"course": course, "semester": semester})).All(&events) + if err != nil { + slog.Error("Error while getting events from database: ", "error", err) + return nil, fmt.Errorf("error while getting events from database for course %s", course) + } + + return events, nil +} + func GetAllModulesForCourse(app *pocketbase.PocketBase, course string, semester string) (model.Events, error) { var events model.Events diff --git a/services/data-manager/service/events/eventService.go b/services/data-manager/service/events/eventService.go index f0a3534..2a3c756 100644 --- a/services/data-manager/service/events/eventService.go +++ b/services/data-manager/service/events/eventService.go @@ -151,7 +151,7 @@ func (s *PocketBaseEventService) UpdateModulesForCourse(seminarGroup model.Semin //if there are no events in the database, save the new events //get all events for the course and the semester - dbEvents, err := db.GetAllEventsForCourse(s.app, seminarGroup.Course) + dbEvents, err := db.GetAllEventsForCourseAndSemester(s.app, seminarGroup.Course, seminarGroup.Semester) if err != nil { return nil, err } @@ -197,7 +197,7 @@ func (s *PocketBaseEventService) UpdateModulesForCourse(seminarGroup model.Semin return nil, err } - slog.Info("Course: " + seminarGroup.Course + " - Event changes: " + strconv.FormatInt(int64(len(insertList)), 10) + " new events, " + strconv.FormatInt(int64(len(deleteList)), 10) + " deleted events") + slog.Info("Course: " + seminarGroup.Course + " [" + seminarGroup.Semester + "] - Events: " + strconv.FormatInt(int64(len(savedEvents)), 10) + " new, " + strconv.FormatInt(int64(len(deleteList)), 10) + " deleted" + ", " + strconv.FormatInt(int64(len(dbEvents)-len(deleteList)+len(savedEvents)), 10) + " total") return savedEvents, nil } diff --git a/services/data-manager/service/fetch/v1/fetchSeminarEventService.go b/services/data-manager/service/fetch/v1/fetchSeminarEventService.go index 9a0aa1a..7634ada 100644 --- a/services/data-manager/service/fetch/v1/fetchSeminarEventService.go +++ b/services/data-manager/service/fetch/v1/fetchSeminarEventService.go @@ -134,6 +134,7 @@ func parseSeminarGroup(result string) model.SeminarGroup { University: findFirstSpanWithClass(table, "header-1-0-0").FirstChild.Data, Course: course, Events: events, + Semester: semester, } return seminarGroup } diff --git a/services/data-manager/service/fetch/v1/fetchSeminarEventService_test.go b/services/data-manager/service/fetch/v1/fetchSeminarEventService_test.go index 2f0677f..85ba1ac 100644 --- a/services/data-manager/service/fetch/v1/fetchSeminarEventService_test.go +++ b/services/data-manager/service/fetch/v1/fetchSeminarEventService_test.go @@ -617,6 +617,7 @@ func Test_parseSeminarGroup(t *testing.T) { want: model.SeminarGroup{ Course: "23SAM", University: "HTWK Leipzig", + Semester: "ws", Events: []model.Event{ { UUID: "6ebe83db-f29e-5ddd-ae8f-8724b5ba8959",