eventRT/handler/event_query.go

41 lines
1.0 KiB
Go
Raw Normal View History

// 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)
}