feat:#52 added new fetcher from new endpoint

This commit is contained in:
masterElmar
2023-11-30 00:00:38 +01:00
parent d887927645
commit 921a2c7a28
12 changed files with 610 additions and 63 deletions

View File

@@ -7,7 +7,7 @@ import (
"github.com/pocketbase/pocketbase"
)
func SaveEvents(seminarGroup []model.SeminarGroup, app *pocketbase.PocketBase) ([]model.Event, error) {
func SaveSeminarGroupEvents(seminarGroup []model.SeminarGroup, app *pocketbase.PocketBase) ([]model.Event, error) {
var toBeSavedEvents model.Events
var savedRecords model.Events
@@ -43,6 +43,38 @@ func SaveEvents(seminarGroup []model.SeminarGroup, app *pocketbase.PocketBase) (
return savedRecords, nil
}
func SaveEvents(events []model.Event, app *pocketbase.PocketBase) ([]model.Event, error) {
var toBeSavedEvents model.Events
var savedRecords model.Events
// check if event is already in database and add to toBeSavedEvents if not
for _, event := range events {
existsInDatabase, err := findEventByDayWeekStartEndNameCourse(event, event.Course, app)
alreadyAddedToSave := toBeSavedEvents.Contains(event)
if err != nil {
return nil, err
}
if !existsInDatabase && !alreadyAddedToSave {
toBeSavedEvents = append(toBeSavedEvents, event)
}
}
// create record for each event that's not already in the database
for _, event := range toBeSavedEvents {
event.MarkAsNew()
// auto mapping for event fields to record fields
err := app.Dao().Save(&event)
if err != nil {
return nil, err
} else {
savedRecords = append(savedRecords, event)
}
}
return savedRecords, nil
}
// check if event is already in database and return true if it is and false if it's not
func findEventByDayWeekStartEndNameCourse(event model.Event, course string, app *pocketbase.PocketBase) (bool, error) {
@@ -165,7 +197,7 @@ func GetAllModulesForCourse(app *pocketbase.PocketBase, course string, semester
func GetAllModulesDistinctByNameAndCourse(app *pocketbase.PocketBase) (model.Events, error) {
var events model.Events
err := app.Dao().DB().Select("*").From("events").GroupBy("Name", "course").Distinct(true).All(&events)
err := app.Dao().DB().Select("*").From("events").GroupBy("Name").Distinct(true).All(&events)
if err != nil {
print("Error while getting events from database: ", err)
return nil, err