diff --git a/services/data-manager/migrations/1741706407_updated_users.go b/services/data-manager/migrations/1741706407_updated_users.go new file mode 100644 index 0000000..8d10998 --- /dev/null +++ b/services/data-manager/migrations/1741706407_updated_users.go @@ -0,0 +1,44 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("_pb_users_auth_") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "oauth2": { + "enabled": true + } + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }, func(app core.App) error { + collection, err := app.FindCollectionByNameOrId("_pb_users_auth_") + if err != nil { + return err + } + + // update collection data + if err := json.Unmarshal([]byte(`{ + "oauth2": { + "enabled": false + } + }`), &collection); err != nil { + return err + } + + return app.Save(collection) + }) +} diff --git a/services/data-manager/service/db/dbGroups.go b/services/data-manager/service/db/dbGroups.go index f526936..08c75c3 100644 --- a/services/data-manager/service/db/dbGroups.go +++ b/services/data-manager/service/db/dbGroups.go @@ -146,3 +146,17 @@ func GetAllCoursesForSemesterWithEvents(app *pocketbase.PocketBase, semester str return courseArray, nil } + +func FindCourseByCourseName(app *pocketbase.PocketBase, courseName string) (model.SeminarGroup, error) { + + var course SeminarGroup + + // get the course by its name + err := app.DB().Select("*").From("groups").Where(dbx.NewExp("course = {:course}", dbx.Params{"course": courseName})).One(&course) + if err != nil { + slog.Error("Error while getting group from database: ", "error", err) + return model.SeminarGroup{}, err + } + + return course.toSeminarGroupModel(), nil +} diff --git a/services/data-manager/service/db/dbRooms.go b/services/data-manager/service/db/dbRooms.go index db97e57..dc1e9fd 100644 --- a/services/data-manager/service/db/dbRooms.go +++ b/services/data-manager/service/db/dbRooms.go @@ -34,7 +34,7 @@ func GetRooms(app *pocketbase.PocketBase) ([]string, error) { } // get all rooms from event records in the events collection - err := app.Dao().DB().Select("Rooms", "course").From("events").Distinct(true).All(&events) + err := app.DB().Select("Rooms", "course").From("events").Distinct(true).All(&events) if err != nil { return nil, err } @@ -83,7 +83,7 @@ func GetRoomScheduleForDay(app *pocketbase.PocketBase, room string, date string) var events []model.Event // get all events from event records in the events collection - err := app.Dao().DB().Select("*").From("events"). + err := app.DB().Select("*").From("events"). Where(dbx.Like("Rooms", room).Escape("_", "_")). AndWhere(dbx.Like("Start", date)). GroupBy("Week", "Start", "End", "Rooms"). @@ -94,6 +94,21 @@ func GetRoomScheduleForDay(app *pocketbase.PocketBase, room string, date string) return events, nil } +func GetRoomSchedule(app *pocketbase.PocketBase, room string) ([]model.Event, error) { + var events []model.Event + + // get all events from event records in the events collection + err := app.DB().Select("*").From("events"). + Where(dbx.Like("Rooms", room).Escape("_", "_")). + GroupBy("Week", "Start", "End", "Rooms"). + All(&events) + if err != nil { + return nil, err + } + return events, nil + +} + func GetRoomScheduleInTimeSpan(app *pocketbase.PocketBase, room string, from string, to string) ([]model.Event, error) { var events []model.Event @@ -107,7 +122,7 @@ func GetRoomScheduleInTimeSpan(app *pocketbase.PocketBase, room string, from str } // get all events from event records in the events collection - err = app.Dao().DB().Select("*").From("events"). + err = app.DB().Select("*").From("events"). Where(dbx.Like("Rooms", room).Escape("_", "_")). AndWhere(dbx.Between("Start", fromDate, toDate)). GroupBy("Week", "Start", "End", "Rooms"). @@ -118,17 +133,3 @@ func GetRoomScheduleInTimeSpan(app *pocketbase.PocketBase, room string, from str } return events, nil } - -func GetRoomSchedule(app *pocketbase.PocketBase, room string) ([]model.Event, error) { - var events []model.Event - - // get all events from event records in the events collection - err := app.Dao().DB().Select("*").From("events"). - Where(dbx.Like("Rooms", room).Escape("_", "_")). - GroupBy("Week", "Start", "End", "Rooms"). - All(&events) - if err != nil { - return nil, err - } - return events, nil -} diff --git a/services/data-manager/service/events/eventService.go b/services/data-manager/service/events/eventService.go index 2a3c756..12d4338 100644 --- a/services/data-manager/service/events/eventService.go +++ b/services/data-manager/service/events/eventService.go @@ -112,7 +112,7 @@ func (s *PocketBaseEventService) GetModuleByUUID(uuid string) (model.Module, err // If the deletion was successful, nil is returned // If the deletion was not successful, an error is returned func (s *PocketBaseEventService) DeleteAllEventsByCourseAndSemester(course string, semester string) error { - err := db.DeleteAllEventsByCourse(s.app.Dao(), course, semester) + err := db.DeleteAllEventsByCourse(s.app, course, semester) if err != nil { return err } else { @@ -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.GetAllEventsForCourseAndSemester(s.app, seminarGroup.Course, seminarGroup.Semester) + dbEvents, err := db.GetAllEventsForCourse(s.app, seminarGroup.Course) if err != nil { return nil, err } @@ -191,13 +191,13 @@ func (s *PocketBaseEventService) UpdateModulesForCourse(seminarGroup model.Semin } // save all events that are in the insertList - savedEvents, err := db.SaveEvents(insertList, s.app.Dao()) + savedEvents, err := db.SaveEvents(insertList, s.app) if err != nil { slog.Error("Failed to save events: ", "error", err) return nil, err } - 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") + slog.Info("Course: " + seminarGroup.Course + " - Event changes: " + strconv.FormatInt(int64(len(insertList)), 10) + " new events, " + strconv.FormatInt(int64(len(deleteList)), 10) + " deleted events") return savedEvents, nil } diff --git a/services/data-manager/service/fetch/sport/sportFetcher.go b/services/data-manager/service/fetch/sport/sportFetcher.go index 93ecdfc..4e29ea0 100644 --- a/services/data-manager/service/fetch/sport/sportFetcher.go +++ b/services/data-manager/service/fetch/sport/sportFetcher.go @@ -82,13 +82,13 @@ 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.DeleteAllEventsByCourse(app.Dao(), "Sport", functions.GetCurrentSemesterString(clock.RealClock{})) + err = db.DeleteAllEventsByCourse(app, "Sport", functions.GetCurrentSemesterString(clock.RealClock{})) if err != nil { return nil, err } // save events to database - savedEvents, err := db.SaveEvents(events, app.Dao()) + savedEvents, err := db.SaveEvents(events, app) if err != nil { return nil, err