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
}

28
service/db/dbFeeds.go Normal file
View File

@@ -0,0 +1,28 @@
package db
import (
"github.com/pocketbase/dbx"
"github.com/pocketbase/pocketbase"
"github.com/pocketbase/pocketbase/models"
"htwk-planner/model"
)
func SaveFeed(feed model.Feed, collection *models.Collection, app *pocketbase.PocketBase) (*models.Record, error) {
record := models.NewRecord(collection)
record.Set("modules", feed.Modules)
err := app.Dao().SaveRecord(record)
if err != nil {
return nil, err
}
return record, nil
}
func FindFeedByToken(token string, app *pocketbase.PocketBase) (*model.Feed, error) {
var feed model.Feed
err := app.Dao().DB().Select("*").From("feeds").Where(dbx.NewExp("id = {:id}", dbx.Params{"id": token})).One(&feed)
if err != nil {
return nil, err
}
return &feed, err
}

11
service/db/dbFunctions.go Normal file
View File

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