mirror of
https://gitlab.dit.htwk-leipzig.de/htwk-software/htwkalender.git
synced 2025-07-16 09:38:49 +02:00
feat:#65 source code adjusted due to dep changes
This commit is contained in:
44
services/data-manager/migrations/1741706407_updated_users.go
Normal file
44
services/data-manager/migrations/1741706407_updated_users.go
Normal 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)
|
||||||
|
})
|
||||||
|
}
|
@ -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
|
||||||
|
}
|
||||||
|
@ -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
|
|
||||||
}
|
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
Reference in New Issue
Block a user