feat:#65 source code adjusted due to dep changes

This commit is contained in:
Elmar Kresse
2025-04-20 14:13:14 +02:00
parent 629a376176
commit c695eb6a1e
5 changed files with 82 additions and 23 deletions

View File

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

View File

@ -146,3 +146,17 @@ func GetAllCoursesForSemesterWithEvents(app *pocketbase.PocketBase, semester str
return courseArray, nil 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
}

View File

@ -34,7 +34,7 @@ func GetRooms(app *pocketbase.PocketBase) ([]string, error) {
} }
// get all rooms from event records in the events collection // 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 { if err != nil {
return nil, err return nil, err
} }
@ -83,7 +83,7 @@ func GetRoomScheduleForDay(app *pocketbase.PocketBase, room string, date string)
var events []model.Event var events []model.Event
// get all events from event records in the events collection // 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("_", "_")). Where(dbx.Like("Rooms", room).Escape("_", "_")).
AndWhere(dbx.Like("Start", date)). AndWhere(dbx.Like("Start", date)).
GroupBy("Week", "Start", "End", "Rooms"). GroupBy("Week", "Start", "End", "Rooms").
@ -94,6 +94,21 @@ func GetRoomScheduleForDay(app *pocketbase.PocketBase, room string, date string)
return events, nil 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) { func GetRoomScheduleInTimeSpan(app *pocketbase.PocketBase, room string, from string, to string) ([]model.Event, error) {
var events []model.Event 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 // 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("_", "_")). Where(dbx.Like("Rooms", room).Escape("_", "_")).
AndWhere(dbx.Between("Start", fromDate, toDate)). AndWhere(dbx.Between("Start", fromDate, toDate)).
GroupBy("Week", "Start", "End", "Rooms"). GroupBy("Week", "Start", "End", "Rooms").
@ -118,17 +133,3 @@ func GetRoomScheduleInTimeSpan(app *pocketbase.PocketBase, room string, from str
} }
return events, nil 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
}

View File

@ -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 successful, nil is returned
// If the deletion was not successful, an error is returned // If the deletion was not successful, an error is returned
func (s *PocketBaseEventService) DeleteAllEventsByCourseAndSemester(course string, semester string) error { 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 { if err != nil {
return err return err
} else { } else {
@ -151,7 +151,7 @@ func (s *PocketBaseEventService) UpdateModulesForCourse(seminarGroup model.Semin
//if there are no events in the database, save the new events //if there are no events in the database, save the new events
//get all events for the course and the semester //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 { if err != nil {
return nil, err return nil, err
} }
@ -191,13 +191,13 @@ func (s *PocketBaseEventService) UpdateModulesForCourse(seminarGroup model.Semin
} }
// save all events that are in the insertList // 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 { if err != nil {
slog.Error("Failed to save events: ", "error", err) slog.Error("Failed to save events: ", "error", err)
return nil, 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 return savedEvents, nil
} }

View File

@ -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 // @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 { if err != nil {
return nil, err return nil, err
} }
// save events to database // save events to database
savedEvents, err := db.SaveEvents(events, app.Dao()) savedEvents, err := db.SaveEvents(events, app)
if err != nil { if err != nil {
return nil, err return nil, err