feat:#65 updated backend deps

This commit is contained in:
Elmar Kresse
2025-04-20 14:04:23 +02:00
parent 8d9af078f0
commit 629a376176
14 changed files with 432 additions and 678 deletions

View File

@@ -19,7 +19,7 @@ package db
import (
"fmt"
"github.com/google/uuid"
"github.com/pocketbase/pocketbase/daos"
"github.com/pocketbase/pocketbase/core"
"github.com/pocketbase/pocketbase/tools/types"
"htwkalender/data-manager/model"
"log/slog"
@@ -36,7 +36,7 @@ func SaveSeminarGroupEvents(seminarGroup model.SeminarGroup, app *pocketbase.Poc
// check if event is already in database and add to toBeSavedEvents if not
for _, event := range seminarGroup.Events {
event = event.SetCourse(seminarGroup.Course)
existsInDatabase, err := findEventByDayWeekStartEndNameCourse(event, seminarGroup.Course, app.Dao())
existsInDatabase, err := findEventByDayWeekStartEndNameCourse(event, seminarGroup.Course, app)
alreadyAddedToSave := toBeSavedEvents.Contains(event)
if err != nil {
@@ -52,7 +52,7 @@ func SaveSeminarGroupEvents(seminarGroup model.SeminarGroup, app *pocketbase.Poc
for _, event := range toBeSavedEvents {
event.MarkAsNew()
// auto mapping for event fields to record fields
err := app.Dao().Save(&event)
err := app.Save(&event)
if err != nil {
return nil, err
} else {
@@ -63,13 +63,13 @@ func SaveSeminarGroupEvents(seminarGroup model.SeminarGroup, app *pocketbase.Poc
return savedRecords, nil
}
func SaveEvents(events []model.Event, txDao *daos.Dao) ([]model.Event, error) {
func SaveEvents(events []model.Event, base *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, txDao)
existsInDatabase, err := findEventByDayWeekStartEndNameCourse(event, event.Course, base)
alreadyAddedToSave := toBeSavedEvents.Contains(event)
if err != nil {
@@ -84,7 +84,7 @@ func SaveEvents(events []model.Event, txDao *daos.Dao) ([]model.Event, error) {
for _, event := range toBeSavedEvents {
event.MarkAsNew()
// auto mapping for event fields to record fields
err := txDao.Save(&event)
err := base.Save(&event)
if err != nil {
return nil, err
} else {
@@ -95,11 +95,11 @@ func SaveEvents(events []model.Event, txDao *daos.Dao) ([]model.Event, error) {
}
// 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, dao *daos.Dao) (bool, error) {
func findEventByDayWeekStartEndNameCourse(event model.Event, course string, base *pocketbase.PocketBase) (bool, error) {
var dbEvent model.Event
err := dao.DB().Select("*").From("events").
err := base.DB().Select("*").From("events").
Where(dbx.NewExp(
"Day = {:day} AND "+
"Week = {:week} AND "+
@@ -191,7 +191,7 @@ func GetPlanForModules(app *pocketbase.PocketBase, modules []string) (model.Even
var selectedModulesQuery = buildIcalQueryForModules(moduleBatch)
// get all events from event records in the events collection
err := app.Dao().DB().Select("*").From("events").Where(selectedModulesQuery).OrderBy("start").All(&events)
err := app.DB().Select("*").From("events").Where(selectedModulesQuery).OrderBy("start").All(&events)
if err != nil {
return nil, err
}
@@ -204,20 +204,7 @@ func GetAllEventsForCourse(app *pocketbase.PocketBase, course string) (model.Eve
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}", dbx.Params{"course": course})).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 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)
err := app.DB().Select("*").From("events").Where(dbx.NewExp("course = {:course}", dbx.Params{"course": course})).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)
@@ -230,7 +217,7 @@ func GetAllModulesForCourse(app *pocketbase.PocketBase, course string, semester
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})).GroupBy("Name").Distinct(true).All(&events)
err := app.DB().Select("*").From("events").Where(dbx.NewExp("course = {:course} AND semester = {:semester}", dbx.Params{"course": course, "semester": semester})).GroupBy("Name").Distinct(true).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 and semester %s", course, semester)
@@ -242,7 +229,7 @@ func GetAllModulesForCourse(app *pocketbase.PocketBase, course string, semester
func GetAllModulesDistinctByNameAndCourse(app *pocketbase.PocketBase) ([]model.ModuleDTO, error) {
var modules []model.ModuleDTO
err := app.Dao().DB().Select("Name", "EventType", "Prof", "course", "semester", "uuid").From("events").GroupBy("Name", "Course").Distinct(true).All(&modules)
err := app.DB().Select("Name", "EventType", "Prof", "course", "semester", "uuid").From("events").GroupBy("Name", "Course").Distinct(true).All(&modules)
if err != nil {
slog.Error("Error while getting events from database: ", "error", err)
return nil, fmt.Errorf("error while getting events distinct by name and course from data")
@@ -251,8 +238,8 @@ func GetAllModulesDistinctByNameAndCourse(app *pocketbase.PocketBase) ([]model.M
return modules, nil
}
func DeleteAllEventsByCourse(dao *daos.Dao, course string, semester string) error {
_, err := dao.DB().Delete("events", dbx.NewExp("course = {:course} AND semester = {:semester}", dbx.Params{"course": course, "semester": semester})).Execute()
func DeleteAllEventsByCourse(base *pocketbase.PocketBase, course string, semester string) error {
_, err := base.DB().Delete("events", dbx.NewExp("course = {:course} AND semester = {:semester}", dbx.Params{"course": course, "semester": semester})).Execute()
if err != nil {
return err
@@ -260,8 +247,8 @@ func DeleteAllEventsByCourse(dao *daos.Dao, course string, semester string) erro
return nil
}
func DeleteAllEventsRatherThenCourse(dao *daos.Dao, course string, semester string) error {
_, err := dao.DB().Delete("events", dbx.NewExp("course != {:course} AND semester = {:semester}", dbx.Params{"course": course, "semester": semester})).Execute()
func DeleteAllEventsRatherThenCourse(app core.App, course string, semester string) error {
_, err := app.DB().Delete("events", dbx.NewExp("course != {:course} AND semester = {:semester}", dbx.Params{"course": course, "semester": semester})).Execute()
if err != nil {
return err
@@ -269,9 +256,9 @@ func DeleteAllEventsRatherThenCourse(dao *daos.Dao, course string, semester stri
return nil
}
func DeleteAllEvents(app *pocketbase.PocketBase) error {
func DeleteAllEvents(app core.App) error {
_, err := app.Dao().DB().Delete("events", dbx.NewExp("1=1")).Execute()
_, err := app.DB().Delete("events", dbx.NewExp("1=1")).Execute()
if err != nil {
return err
@@ -283,7 +270,7 @@ func DeleteAllEvents(app *pocketbase.PocketBase) error {
func FindModuleByUUID(app *pocketbase.PocketBase, uuid string) (model.Module, error) {
var module model.Module
err := app.Dao().DB().Select("*").From("events").Where(dbx.NewExp("uuid = {:uuid}", dbx.Params{"uuid": uuid})).One(&module)
err := app.DB().Select("*").From("events").Where(dbx.NewExp("uuid = {:uuid}", dbx.Params{"uuid": uuid})).One(&module)
if err != nil {
return model.Module{}, err
}
@@ -294,7 +281,7 @@ func FindModuleByUUID(app *pocketbase.PocketBase, uuid string) (model.Module, er
func FindAllEventsByModule(app *pocketbase.PocketBase, module model.Module) (model.Events, error) {
var events model.Events
err := app.Dao().DB().Select("*").From("events").Where(dbx.NewExp("Name = {:moduleName} AND course = {:course}", dbx.Params{"moduleName": module.Name, "course": module.Course})).All(&events)
err := app.DB().Select("*").From("events").Where(dbx.NewExp("Name = {:moduleName} AND course = {:course}", dbx.Params{"moduleName": module.Name, "course": module.Course})).All(&events)
if err != nil {
return nil, err
}
@@ -305,7 +292,7 @@ func FindAllEventsByModule(app *pocketbase.PocketBase, module model.Module) (mod
func GetAllModulesByNameAndDateRange(app *pocketbase.PocketBase, name string, startDate time.Time, endDate time.Time) (model.Events, error) {
var events model.Events
err := app.Dao().DB().Select("*").From("events").Where(dbx.NewExp("Name = {:name} AND Start >= {:startDate} AND End <= {:endDate}", dbx.Params{"name": name, "startDate": startDate, "endDate": endDate})).All(&events)
err := app.DB().Select("*").From("events").Where(dbx.NewExp("Name = {:name} AND Start >= {:startDate} AND End <= {:endDate}", dbx.Params{"name": name, "startDate": startDate, "endDate": endDate})).All(&events)
if err != nil {
return nil, err
}
@@ -355,7 +342,7 @@ func GetEventsThatCollideWithTimeRange(app *pocketbase.PocketBase, from time.Tim
func GetEventsThatStartBeforeAndEndAfter(app *pocketbase.PocketBase, from types.DateTime, to types.DateTime) (model.Events, error) {
var events model.Events
err := app.Dao().DB().Select("*").From("events").Where(dbx.NewExp("Start <= {:startDate} AND End >= {:endDate} AND Start <= {:endDate} AND End >= {:startDate}", dbx.Params{"startDate": from, "endDate": to})).Distinct(true).All(&events)
err := app.DB().Select("*").From("events").Where(dbx.NewExp("Start <= {:startDate} AND End >= {:endDate} AND Start <= {:endDate} AND End >= {:startDate}", dbx.Params{"startDate": from, "endDate": to})).Distinct(true).All(&events)
if err != nil {
return nil, err
@@ -367,7 +354,7 @@ func GetEventsThatStartBeforeAndEndAfter(app *pocketbase.PocketBase, from types.
func GetEventsThatStartAfterAndEndBefore(app *pocketbase.PocketBase, from types.DateTime, to types.DateTime) (model.Events, error) {
var events model.Events
err := app.Dao().DB().Select("*").From("events").Where(dbx.NewExp("Start >= {:startDate} AND End <= {:endDate} AND Start <= {:endDate} AND End >= {:startDate}", dbx.Params{"startDate": from, "endDate": to})).All(&events)
err := app.DB().Select("*").From("events").Where(dbx.NewExp("Start >= {:startDate} AND End <= {:endDate} AND Start <= {:endDate} AND End >= {:startDate}", dbx.Params{"startDate": from, "endDate": to})).All(&events)
if err != nil {
return nil, err
@@ -379,7 +366,7 @@ func GetEventsThatStartAfterAndEndBefore(app *pocketbase.PocketBase, from types.
func GetEventsThatStartBeforeAndEndBefore(app *pocketbase.PocketBase, from types.DateTime, to types.DateTime) (model.Events, error) {
var events model.Events
err := app.Dao().DB().Select("*").From("events").Where(dbx.NewExp("Start <= {:startDate} AND End <= {:endDate} AND Start <= {:endDate} AND End >= {:startDate}", dbx.Params{"startDate": from, "endDate": to})).All(&events)
err := app.DB().Select("*").From("events").Where(dbx.NewExp("Start <= {:startDate} AND End <= {:endDate} AND Start <= {:endDate} AND End >= {:startDate}", dbx.Params{"startDate": from, "endDate": to})).All(&events)
if err != nil {
return nil, err
@@ -391,7 +378,7 @@ func GetEventsThatStartBeforeAndEndBefore(app *pocketbase.PocketBase, from types
func GetAllEventTypes(app *pocketbase.PocketBase) ([]model.EventType, error) {
var eventTypes []model.EventType
err := app.Dao().DB().Select("EventType").From("events").GroupBy("EventType").Distinct(true).All(&eventTypes)
err := app.DB().Select("EventType").From("events").GroupBy("EventType").Distinct(true).All(&eventTypes)
if err != nil {
return nil, err
}
@@ -401,7 +388,7 @@ func GetAllEventTypes(app *pocketbase.PocketBase) ([]model.EventType, error) {
func GetEventsThatStartAfterAndEndAfter(app *pocketbase.PocketBase, from types.DateTime, to types.DateTime) (model.Events, error) {
var events model.Events
err := app.Dao().DB().Select("*").From("events").Where(dbx.NewExp("Start >= {:startDate} AND End >= {:endDate} AND Start <= {:endDate} AND End >= {:startDate}", dbx.Params{"startDate": from, "endDate": to})).All(&events)
err := app.DB().Select("*").From("events").Where(dbx.NewExp("Start >= {:startDate} AND End >= {:endDate} AND Start <= {:endDate} AND End >= {:startDate}", dbx.Params{"startDate": from, "endDate": to})).All(&events)
if err != nil {
return nil, err
@@ -412,7 +399,7 @@ func GetEventsThatStartAfterAndEndAfter(app *pocketbase.PocketBase, from types.D
func DeleteEvents(list model.Events, app *pocketbase.PocketBase) error {
for _, event := range list {
err := app.Dao().Delete(&event)
err := app.Delete(&event)
if err != nil {
return err
}

View File

@@ -20,16 +20,15 @@ import (
"errors"
"github.com/pocketbase/dbx"
"github.com/pocketbase/pocketbase"
"github.com/pocketbase/pocketbase/daos"
"github.com/pocketbase/pocketbase/models"
"github.com/pocketbase/pocketbase/core"
"htwkalender/data-manager/model"
"time"
)
func SaveFeed(feed model.Feed, collection *models.Collection, app *pocketbase.PocketBase) (*models.Record, error) {
record := models.NewRecord(collection)
func SaveFeed(feed model.Feed, collection *core.Collection, app *pocketbase.PocketBase) (*core.Record, error) {
record := core.NewRecord(collection)
record.Set("modules", feed.Modules)
err := app.Dao().SaveRecord(record)
err := app.Save(record)
if err != nil {
return nil, err
@@ -39,7 +38,7 @@ func SaveFeed(feed model.Feed, collection *models.Collection, app *pocketbase.Po
func FindFeedByToken(app *pocketbase.PocketBase, token string) (*model.Feed, error) {
record, err := app.Dao().FindRecordById("feeds", token)
record, err := app.FindRecordById("feeds", token)
if err != nil {
return nil, err
@@ -53,15 +52,15 @@ func FindFeedByToken(app *pocketbase.PocketBase, token string) (*model.Feed, err
//update retrieved time if the is not marked as deleted
if !record.GetBool("deleted") {
record.Set("retrieved", time.Now())
err = app.Dao().SaveRecord(record)
err = app.Save(record)
}
return &feed, err
}
func DeleteFeed(db *daos.Dao, feedId string) error {
func DeleteFeed(base *pocketbase.PocketBase, feedId string) error {
sqlResult, err := db.DB().Delete("feeds", dbx.NewExp("id = {:id}", dbx.Params{"id": feedId})).Execute()
sqlResult, err := base.DB().Delete("feeds", dbx.NewExp("id = {:id}", dbx.Params{"id": feedId})).Execute()
var deletedRows int64
if sqlResult != nil {
deletedRows, _ = sqlResult.RowsAffected()
@@ -78,19 +77,19 @@ func DeleteFeed(db *daos.Dao, feedId string) error {
}
}
func GetAllFeeds(db *daos.Dao) ([]model.Feed, error) {
func GetAllFeeds(base *pocketbase.PocketBase) ([]model.Feed, error) {
var feeds []model.Feed
err := db.DB().Select("*").From("feeds").All(&feeds)
err := base.DB().Select("*").From("feeds").All(&feeds)
if err != nil {
return nil, err
}
return feeds, nil
}
func MarkForDelete(db *daos.Dao, token string) error {
func MarkForDelete(base *pocketbase.PocketBase, token string) error {
// get record from db
feed := model.Feed{}
err := db.DB().Select("*").From("feeds").Where(dbx.NewExp("id = {:id}", dbx.Params{"id": token})).One(&feed)
err := base.DB().Select("*").From("feeds").Where(dbx.NewExp("id = {:id}", dbx.Params{"id": token})).One(&feed)
if err != nil {
return err
}
@@ -99,7 +98,7 @@ func MarkForDelete(db *daos.Dao, token string) error {
feed.Modules = "[\n {\n \"uuid\": \"\",\n \"name\": \"Deleted\",\n \"course\": \"\",\n \"userDefinedName\": \"Deleted\",\n \"reminder\": false\n }\n]"
// save record
err = db.Save(&feed)
err = base.Save(&feed)
if err != nil {
return err
}

View File

@@ -18,10 +18,10 @@ package db
import (
"github.com/pocketbase/pocketbase"
"github.com/pocketbase/pocketbase/models"
"github.com/pocketbase/pocketbase/core"
)
func FindCollection(app *pocketbase.PocketBase, collectionName string) (*models.Collection, error) {
collection, dbError := app.Dao().FindCollectionByNameOrId(collectionName)
func FindCollection(app *pocketbase.PocketBase, collectionName string) (*core.Collection, error) {
collection, dbError := app.FindCollectionByNameOrId(collectionName)
return collection, dbError
}

View File

@@ -19,7 +19,7 @@ package db
import (
"github.com/pocketbase/dbx"
"github.com/pocketbase/pocketbase"
"github.com/pocketbase/pocketbase/models"
"github.com/pocketbase/pocketbase/core"
"htwkalender/data-manager/model"
"log/slog"
)
@@ -32,7 +32,7 @@ type SeminarGroup struct {
Faculty string `db:"faculty" json:"faculty"`
FacultyId string `db:"facultyId" json:"facultyId"`
Semester string `db:"semester" json:"semester"`
models.BaseModel
core.BaseModel
}
func (s *SeminarGroup) TableName() string {
@@ -69,7 +69,7 @@ type SeminarGroups []*SeminarGroup
func SaveGroups(seminarGroups SeminarGroups, app *pocketbase.PocketBase) (SeminarGroups, error) {
// delete all groups from the database
execute, err := app.Dao().DB().Delete("groups", dbx.NewExp("1 = 1")).Execute()
execute, err := app.DB().Delete("groups", dbx.NewExp("1 = 1")).Execute()
if err != nil {
return nil, err
}
@@ -77,7 +77,7 @@ func SaveGroups(seminarGroups SeminarGroups, app *pocketbase.PocketBase) (Semina
savedGroups := SeminarGroups{}
for _, group := range seminarGroups {
saveErr := app.Dao().Save(group)
saveErr := app.Save(group)
if saveErr != nil {
return nil, saveErr
}
@@ -95,7 +95,7 @@ func GetAllCourses(app *pocketbase.PocketBase) []string {
}
// get all rooms from event records in the events collection
err := app.Dao().DB().Select("course").From("groups").All(&courses)
err := app.DB().Select("course").From("groups").All(&courses)
if err != nil {
slog.Error("Error while getting groups from database: ", "error", err)
return []string{}
@@ -115,7 +115,7 @@ func GetAllCoursesForSemester(app *pocketbase.PocketBase, semester string) []mod
var courses SeminarGroups
// get all courses for a specific semester
err := app.Dao().DB().Select("*").From("groups").Where(dbx.NewExp("semester = {:semester}", dbx.Params{"semester": semester})).All(&courses)
err := app.DB().Select("*").From("groups").Where(dbx.NewExp("semester = {:semester}", dbx.Params{"semester": semester})).All(&courses)
if err != nil {
slog.Error("Error while getting groups from database: ", "error", err)
return nil
@@ -132,7 +132,7 @@ func GetAllCoursesForSemesterWithEvents(app *pocketbase.PocketBase, semester str
}
// get all courses from events distinct for a specific semester
err := app.Dao().DB().Select("course").From("events").Where(dbx.NewExp("semester = {:semester}", dbx.Params{"semester": semester})).Distinct(true).All(&courses)
err := app.DB().Select("course").From("events").Where(dbx.NewExp("semester = {:semester}", dbx.Params{"semester": semester})).Distinct(true).All(&courses)
if err != nil {
slog.Error("Error while getting groups from database: ", "error", err)
return nil, err
@@ -146,17 +146,3 @@ 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.Dao().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
}