Skip to content

Commit 32d893b

Browse files
committed
Add not documents event-handling for other events
1 parent 5e2d44e commit 32d893b

File tree

3 files changed

+43
-16
lines changed

3 files changed

+43
-16
lines changed

api/controllers/astra.go

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package controllers
22

33
import (
44
"context"
5+
"errors"
56
"net/http"
67
"time"
78

@@ -31,14 +32,19 @@ func AstraEvents(c *gin.Context) {
3132

3233
date := c.Param("date")
3334

34-
var astra_events schema.MultiBuildingEvents[schema.AstraEvent]
35+
var astraEvents schema.MultiBuildingEvents[schema.AstraEvent]
3536

3637
// Find astra event given date
37-
err := astraCollection.FindOne(ctx, bson.M{"date": date}).Decode(&astra_events)
38+
err := astraCollection.FindOne(ctx, bson.M{"date": date}).Decode(&astraEvents)
3839
if err != nil {
39-
respondWithInternalError(c, err)
40-
return
40+
if errors.Is(err, mongo.ErrNoDocuments) {
41+
astraEvents.Date = date
42+
astraEvents.Buildings = []schema.SingleBuildingEvents[schema.AstraEvent]{}
43+
} else {
44+
respondWithInternalError(c, err)
45+
return
46+
}
4147
}
4248

43-
respond(c, http.StatusOK, "success", astra_events)
49+
respond(c, http.StatusOK, "success", astraEvents)
4450
}

api/controllers/events.go

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,13 @@ func EventsByBuilding(c *gin.Context) {
7474
// find and parse matching date
7575
err := eventsCollection.FindOne(ctx, bson.M{"date": date}).Decode(&events)
7676
if err != nil {
77-
respondWithInternalError(c, err)
78-
return
77+
if errors.Is(err, mongo.ErrNoDocuments) {
78+
events.Date = date
79+
events.Buildings = []schema.SingleBuildingEvents[schema.SectionWithTime]{}
80+
} else {
81+
respondWithInternalError(c, err)
82+
return
83+
}
7984
}
8085

8186
// filter for the specified building
@@ -123,8 +128,13 @@ func EventsByRoom(c *gin.Context) {
123128
// find and parse matching date
124129
err := eventsCollection.FindOne(ctx, bson.M{"date": date}).Decode(&events)
125130
if err != nil {
126-
respondWithInternalError(c, err)
127-
return
131+
if errors.Is(err, mongo.ErrNoDocuments) {
132+
events.Date = date
133+
events.Buildings = []schema.SingleBuildingEvents[schema.SectionWithTime]{}
134+
} else {
135+
respondWithInternalError(c, err)
136+
return
137+
}
128138
}
129139

130140
// filter for the specified building and room
@@ -175,8 +185,13 @@ func SectionsByRoomDetailed(c *gin.Context) {
175185
// Step 1: Find events for the specified date
176186
err := eventsCollection.FindOne(ctx, bson.M{"date": date}).Decode(&events)
177187
if err != nil {
178-
respondWithInternalError(c, err)
179-
return
188+
if errors.Is(err, mongo.ErrNoDocuments) {
189+
events.Date = date
190+
events.Buildings = []schema.SingleBuildingEvents[schema.SectionWithTime]{}
191+
} else {
192+
respondWithInternalError(c, err)
193+
return
194+
}
180195
}
181196

182197
// Step 2: Extract section IDs for the specified building and room

api/controllers/mazevo.go

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package controllers
22

33
import (
44
"context"
5+
"errors"
56
"net/http"
67
"time"
78

@@ -31,14 +32,19 @@ func MazevoEvents(c *gin.Context) {
3132

3233
date := c.Param("date")
3334

34-
var mazevo_events schema.MultiBuildingEvents[schema.MazevoEvent]
35+
var mazevoEvents schema.MultiBuildingEvents[schema.MazevoEvent]
3536

3637
// Find mazevo event for input date
37-
err := mazevoCollection.FindOne(ctx, bson.M{"date": date}).Decode(&mazevo_events)
38+
err := mazevoCollection.FindOne(ctx, bson.M{"date": date}).Decode(&mazevoEvents)
3839
if err != nil {
39-
respondWithInternalError(c, err)
40-
return
40+
if errors.Is(err, mongo.ErrNoDocuments) {
41+
mazevoEvents.Date = date
42+
mazevoEvents.Buildings = []schema.SingleBuildingEvents[schema.MazevoEvent]{}
43+
} else {
44+
respondWithInternalError(c, err)
45+
return
46+
}
4147
}
4248

43-
respond(c, http.StatusOK, "success", mazevo_events)
49+
respond(c, http.StatusOK, "success", mazevoEvents)
4450
}

0 commit comments

Comments
 (0)