[#10] Move to new endpoint (room schedule for given duration)

This commit is contained in:
Tom Wahl
2023-10-28 13:21:23 +02:00
parent f9ef791d67
commit f09f952ca3
9 changed files with 1171 additions and 263 deletions

View File

@@ -1,11 +1,13 @@
package db
import (
"fmt"
"github.com/pocketbase/dbx"
"github.com/pocketbase/pocketbase"
"htwkalender/model"
"htwkalender/service/functions"
"strings"
"time"
)
func GetRooms(app *pocketbase.PocketBase) []string {
@@ -40,7 +42,10 @@ func GetRoomScheduleForDay(app *pocketbase.PocketBase, room string, date string)
var events []model.Event
// get all events from event records in the events collection
err := app.Dao().DB().Select("*").From("events").Where(dbx.Like("Rooms", room)).AndWhere(dbx.Like("Start", date)).All(&events)
err := app.Dao().DB().Select("*").From("events").
Where(dbx.Like("Rooms", room)).
AndWhere(dbx.Like("Start", date)).
GroupBy("Start", "End", "Rooms").All(&events)
if err != nil {
print("Error while getting events from database: ", err)
return nil
@@ -48,11 +53,27 @@ func GetRoomScheduleForDay(app *pocketbase.PocketBase, room string, date string)
return events
}
func GetRoomScheduleForWeek(app *pocketbase.PocketBase, room string, week string) []model.Event {
func GetRoomSchedule(app *pocketbase.PocketBase, room string, from string, to string) []model.Event {
var events []model.Event
fromDate, err := time.Parse("2000-01-02", from)
if err != nil {
fmt.Println("Error parsing date 'from':", err)
return nil
}
toDate, err := time.Parse("2000-01-02", to)
if err != nil {
fmt.Println("Error parsing date 'to':", err)
return nil
}
// get all events from event records in the events collection
err := app.Dao().DB().Select("*").From("events").Where(dbx.Like("Rooms", room)).AndWhere(dbx.Like("Week", week)).GroupBy("week, start, end, room").All(&events)
err = app.Dao().DB().Select("*").From("events").
Where(dbx.Like("Rooms", room)).
AndWhere(dbx.Between("Start", fromDate, toDate)).
GroupBy("Week", "Start", "End", "Rooms").
All(&events)
if err != nil {
print("Error while getting events from database: ", err)
return nil