38 lines
1.1 KiB
Go
38 lines
1.1 KiB
Go
package handlers
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/SamuelTariku/FortuneBet-Backend/internal/domain"
|
|
"github.com/gofiber/fiber/v2"
|
|
"go.mongodb.org/mongo-driver/bson"
|
|
"go.mongodb.org/mongo-driver/mongo"
|
|
"go.mongodb.org/mongo-driver/mongo/options"
|
|
)
|
|
|
|
func GetLogsHandler(appCtx context.Context) fiber.Handler {
|
|
return func(c *fiber.Ctx) error {
|
|
client, err := mongo.Connect(appCtx, options.Client().ApplyURI("mongodb://root:secret@mongo:27017/?authSource=admin"))
|
|
if err != nil {
|
|
return fiber.NewError(fiber.StatusInternalServerError, "MongoDB connection failed: "+err.Error())
|
|
}
|
|
|
|
collection := client.Database("logdb").Collection("applogs")
|
|
filter := bson.M{}
|
|
opts := options.Find().SetSort(bson.D{{Key: "timestamp", Value: -1}}).SetLimit(100)
|
|
|
|
cursor, err := collection.Find(appCtx, filter, opts)
|
|
if err != nil {
|
|
return fiber.NewError(fiber.StatusInternalServerError, "Failed to fetch logs: "+err.Error())
|
|
}
|
|
defer cursor.Close(appCtx)
|
|
|
|
var logs []domain.LogEntry
|
|
if err := cursor.All(appCtx, &logs); err != nil {
|
|
return fiber.NewError(fiber.StatusInternalServerError, "Cursor decoding error: "+err.Error())
|
|
}
|
|
|
|
return c.JSON(logs)
|
|
}
|
|
}
|