fix:#34 refactored function to intended service

This commit is contained in:
Elmar Kresse
2024-06-04 00:14:46 +02:00
parent e3b3e891b5
commit 8d28bbdb96
4 changed files with 18 additions and 49 deletions

View File

@@ -62,7 +62,7 @@ func SaveSeminarGroupEvents(seminarGroup model.SeminarGroup, app *pocketbase.Poc
return savedRecords, nil
}
func SaveEventsTxDao(events []model.Event, txDao *daos.Dao) ([]model.Event, error) {
func SaveEvents(events []model.Event, txDao *daos.Dao) ([]model.Event, error) {
var toBeSavedEvents model.Events
var savedRecords model.Events
@@ -93,38 +93,6 @@ func SaveEventsTxDao(events []model.Event, txDao *daos.Dao) ([]model.Event, erro
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.Dao())
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, dao *daos.Dao) (bool, error) {
@@ -262,8 +230,17 @@ func GetAllModulesDistinctByNameAndCourse(app *pocketbase.PocketBase) ([]model.M
return modules, nil
}
func DeleteAllEventsByCourse(app *pocketbase.PocketBase, course string, semester string) error {
_, err := app.Dao().DB().Delete("events", dbx.NewExp("course = {:course} AND semester = {:semester}", dbx.Params{"course": course, "semester": semester})).Execute()
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()
if err != nil {
return err
}
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()
if err != nil {
return err

View File

@@ -95,7 +95,7 @@ func GetModuleByUUID(app *pocketbase.PocketBase, uuid string) (model.Module, err
// If the deletion was successful, nil is returned
// If the deletion was not successful, an error is returned
func DeleteAllEventsByCourseAndSemester(app *pocketbase.PocketBase, course string, semester string) error {
err := db.DeleteAllEventsByCourse(app, course, semester)
err := db.DeleteAllEventsByCourse(app.Dao(), course, semester)
if err != nil {
return err
} else {
@@ -174,7 +174,7 @@ func UpdateModulesForCourse(app *pocketbase.PocketBase, course string) (model.Ev
}
// save all events that are in the insertList
savedEvents, err := db.SaveEvents(insertList, app)
savedEvents, err := db.SaveEvents(insertList, app.Dao())
if err != nil {
slog.Error("Failed to save events: ", "error", err)
return nil, err

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
err = db.DeleteAllEventsByCourse(app, "Sport", functions.GetCurrentSemesterString(clock.RealClock{}))
err = db.DeleteAllEventsByCourse(app.Dao(), "Sport", functions.GetCurrentSemesterString(clock.RealClock{}))
if err != nil {
return nil, err
}
// save events to database
savedEvents, err := db.SaveEvents(events, app)
savedEvents, err := db.SaveEvents(events, app.Dao())
if err != nil {
return nil, err

View File

@@ -17,10 +17,8 @@
package v2
import (
"database/sql"
"fmt"
"github.com/google/uuid"
"github.com/pocketbase/dbx"
"github.com/pocketbase/pocketbase"
"github.com/pocketbase/pocketbase/daos"
"golang.org/x/net/html"
@@ -109,18 +107,12 @@ func updateDatabase(app *pocketbase.PocketBase, eventsToBeAdded []model.Event, c
// to in transaction the events will be added and deleted
err = app.Dao().RunInTransaction(func(txDao *daos.Dao) error {
var execute sql.Result
execute, err = txDao.DB().Delete("events",
dbx.NewExp("course != {:course} AND semester = {:semester}",
dbx.Params{"course": course, "semester": semester})).Execute()
err = db.DeleteAllEventsRatherThenCourse(txDao, course, semester)
if err != nil {
return err
}
var rows int64
rows, err = execute.RowsAffected()
slog.Info("Deleted events: ", "events", rows)
addedEvents, err = db.SaveEventsTxDao(eventsToBeAdded, txDao)
addedEvents, err = db.SaveEvents(eventsToBeAdded, txDao)
if err != nil {
return err
}