feat:#16 added room ics api route

This commit is contained in:
Elmar Kresse
2024-10-25 00:16:02 +02:00
parent 3d41d9d6a4
commit 42172fb0a5
13 changed files with 505 additions and 6 deletions

View File

@@ -94,7 +94,7 @@ func GetRoomScheduleForDay(app *pocketbase.PocketBase, room string, date string)
return events, nil
}
func GetRoomSchedule(app *pocketbase.PocketBase, room string, from string, to string) ([]model.Event, error) {
func GetRoomScheduleInTimeSpan(app *pocketbase.PocketBase, room string, from string, to string) ([]model.Event, error) {
var events []model.Event
fromDate, err := time.Parse("2006-01-02", from)
@@ -118,3 +118,17 @@ func GetRoomSchedule(app *pocketbase.PocketBase, room string, from string, to st
}
return events, nil
}
func GetRoomSchedule(app *pocketbase.PocketBase, room string) ([]model.Event, error) {
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).Escape("_", "_")).
GroupBy("Week", "Start", "End", "Rooms").
All(&events)
if err != nil {
return nil, err
}
return events, nil
}

View File

@@ -0,0 +1,36 @@
package grpc
import (
"context"
"fmt"
"github.com/pocketbase/pocketbase"
pb "htwkalender/common/genproto/modules"
"htwkalender/data-manager/service/db"
)
type RoomServiceHandler struct {
app *pocketbase.PocketBase
pb.UnimplementedRoomServiceServer
}
func (s *RoomServiceHandler) GetRoomEvents(ctx context.Context, in *pb.GetRoomRequest) (*pb.GetRoomResponse, error) {
s.app.Logger().Info(
"Protobuf - GetRoomEvents",
"room", in.Room,
)
fmt.Errorf("Getting events for room %s", in.Room)
// get events from database by room
events, err := db.GetRoomSchedule(s.app, in.Room)
if err != nil {
return nil, err
}
// Implement your logic here to fetch events data based on the room
// Example response
return &pb.GetRoomResponse{
Events: eventsToProto(events),
}, nil
}

View File

@@ -39,6 +39,10 @@ func StartGRPCServer(app *pocketbase.PocketBase) {
app: app,
})
pb.RegisterRoomServiceServer(s, &RoomServiceHandler{
app: app,
})
log.Printf("server listening at %v", lis.Addr())
if err := s.Serve(lis); err != nil {
log.Fatalf("failed to serve: %v", err)

View File

@@ -48,7 +48,7 @@ func GetRoomSchedule(app *pocketbase.PocketBase, room string, from string, to st
room = functions.MapRoom(room, false)
}
roomSchedule, err := db.GetRoomSchedule(app, room, from, to)
roomSchedule, err := db.GetRoomScheduleInTimeSpan(app, room, from, to)
if err != nil {
return nil, err
}