fix:#68 course insert update fetcher

This commit is contained in:
Elmar Kresse
2025-03-08 23:25:53 +01:00
parent ba58e95216
commit a7e523f97b
3 changed files with 18 additions and 4 deletions

View File

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

View File

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

View File

@ -69,7 +69,7 @@ func FetchAndParse(season, label string) (model.SeminarGroup, error) {
if err != nil {
return model.SeminarGroup{}, err
}
return parseSeminarGroup(result), nil
return parseSeminarGroup(result, season), nil
}
func SplitEventType(events []model.Event) ([]model.Event, error) {
@ -90,7 +90,7 @@ func SplitEventType(events []model.Event) ([]model.Event, error) {
return events, nil
}
func parseSeminarGroup(result string) model.SeminarGroup {
func parseSeminarGroup(result string, semester string) model.SeminarGroup {
doc, err := html.Parse(strings.NewReader(result))
if err != nil {
fmt.Printf("Error occurred while parsing the HTML document: %s\n", err.Error())
@ -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
}