41 lines
1.0 KiB
Go
41 lines
1.0 KiB
Go
|
|
// Package handler define HTTP handler functions for eventRT service
|
||
|
|
package handler
|
||
|
|
|
||
|
|
import (
|
||
|
|
"errors"
|
||
|
|
"net/http"
|
||
|
|
|
||
|
|
"eventRT/constants"
|
||
|
|
"eventRT/database"
|
||
|
|
"eventRT/event"
|
||
|
|
"eventRT/logger"
|
||
|
|
|
||
|
|
"github.com/gin-gonic/gin"
|
||
|
|
"go.mongodb.org/mongo-driver/bson"
|
||
|
|
"go.mongodb.org/mongo-driver/mongo"
|
||
|
|
)
|
||
|
|
|
||
|
|
// GetEventHandler handles GET /events/:event_uuid
|
||
|
|
func GetEventHandler(c *gin.Context) {
|
||
|
|
ctx := c.Request.Context()
|
||
|
|
eventUUID := c.Param("event_uuid")
|
||
|
|
|
||
|
|
var record event.EventRecord
|
||
|
|
err := database.GetMongoClient().
|
||
|
|
Database(constants.EventDBName).
|
||
|
|
Collection(constants.EventCollectionName).
|
||
|
|
FindOne(ctx, bson.M{"event_uuid": eventUUID}).
|
||
|
|
Decode(&record)
|
||
|
|
if err != nil {
|
||
|
|
if errors.Is(err, mongo.ErrNoDocuments) {
|
||
|
|
c.JSON(http.StatusNotFound, gin.H{"error": "event not found"})
|
||
|
|
return
|
||
|
|
}
|
||
|
|
logger.Error(ctx, "query event by uuid failed", "event_uuid", eventUUID, "error", err)
|
||
|
|
c.JSON(http.StatusInternalServerError, gin.H{"error": "internal server error"})
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
c.JSON(http.StatusOK, record)
|
||
|
|
}
|