update for ical create process, new endpoints for frontend

This commit is contained in:
Elmar Kresse
2023-09-15 04:42:14 +02:00
parent eeb84db0cc
commit e1d143908a
10 changed files with 250 additions and 47 deletions

View File

@@ -101,7 +101,7 @@ func (e Events) EmitICal() goics.Componenter {
return c
}
// GetPlanForCourseAndSemester gets all events for specific course and semester
// gets all events for specific course and semester
// TODO add filter for year
func GetPlanForCourseAndSemester(app *pocketbase.PocketBase, course string, semester string) Events {
var events Events
@@ -114,6 +114,29 @@ func GetPlanForCourseAndSemester(app *pocketbase.PocketBase, course string, seme
return events
}
func GetPlanForModules(app *pocketbase.PocketBase, modules []string) Events {
// build query string with name equals elements in modules for dbx query
var queryString string
for i, module := range modules {
if i == 0 {
queryString = "Name = '" + module + "'"
} else {
queryString = queryString + " OR Name = '" + module + "'"
}
}
var events Events
// get all events from event records in the events collection
err := app.Dao().DB().Select("*").From("events").Where(dbx.NewExp(queryString)).All(&events)
if err != nil {
print("Error while getting events from database: ", err)
return nil
}
return events
}
func GetAllModulesForCourse(app *pocketbase.PocketBase, course string, semester string) ([]string, error) {
var events []struct {
Name string `db:"Name" json:"Name"`
@@ -133,3 +156,32 @@ func GetAllModulesForCourse(app *pocketbase.PocketBase, course string, semester
}
return eventArray, nil
}
func GetAllModulesDistinct(app *pocketbase.PocketBase) ([]struct {
Name string
Course string
}, error) {
var events []struct {
Name string `db:"Name" json:"Name"`
Course string `db:"course" json:"course"`
}
var eventArray []struct {
Name string
Course string
}
err := app.Dao().DB().Select("Name", "course").From("events").Distinct(true).All(&events)
if err != nil {
print("Error while getting events from database: ", err)
return eventArray, err
}
for _, event := range events {
eventArray = append(eventArray, struct {
Name string
Course string
}{event.Name, event.Course})
}
return eventArray, nil
}