added batch sized of 100 modules for ical event requests

This commit is contained in:
Elmar Kresse
2023-10-18 18:30:42 +02:00
parent a7f5d3f1db
commit 8eafc9dd2d
2 changed files with 19 additions and 8 deletions

View File

@@ -116,15 +116,27 @@ func buildIcalQueryForModules(modules []model.FeedCollection) dbx.Expression {
// used for the ical feed
func GetPlanForModules(app *pocketbase.PocketBase, modules []model.FeedCollection) model.Events {
var selectedModulesQuery = buildIcalQueryForModules(modules)
var events model.Events
// get all events from event records in the events collection
err := app.Dao().DB().Select("*").From("events").Where(selectedModulesQuery).All(&events)
if err != nil {
print("Error while getting events from database: ", err)
return nil
// iterate over modules in 100 batch sizes
for i := 0; i < len(modules); i += 100 {
var moduleBatch []model.FeedCollection
if i+100 > len(modules) {
moduleBatch = modules[i:]
} else {
moduleBatch = modules[i : i+100]
}
var selectedModulesQuery = buildIcalQueryForModules(moduleBatch)
// get all events from event records in the events collection
err := app.Dao().DB().Select("*").From("events").Where(selectedModulesQuery).All(&events)
if err != nil {
print("Error while getting events from database: ", err)
return nil
}
}
return events
}