package handlers import ( "context" "time" "github.com/gofiber/fiber/v2" "jd-book-uploader/services" ) // HealthCheck handles health check requests func HealthCheck(c *fiber.Ctx) error { ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() status := fiber.Map{ "status": "ok", } // Check database connection if services.DB != nil { err := services.DB.Ping(ctx) if err != nil { status["database"] = "disconnected" status["status"] = "degraded" return c.Status(fiber.StatusServiceUnavailable).JSON(status) } status["database"] = "connected" } else { status["database"] = "not_initialized" status["status"] = "degraded" return c.Status(fiber.StatusServiceUnavailable).JSON(status) } // Check Firebase connection if services.FirebaseClient != nil { // Try to get bucket to verify connection bucket, err := services.FirebaseClient.DefaultBucket() if err != nil || bucket == nil { status["firebase"] = "disconnected" status["status"] = "degraded" return c.Status(fiber.StatusServiceUnavailable).JSON(status) } status["firebase"] = "connected" } else { status["firebase"] = "not_initialized" status["status"] = "degraded" return c.Status(fiber.StatusServiceUnavailable).JSON(status) } return c.JSON(status) }