package admin_recovery import ( "fmt" "gitea.pena/PenaSide/codeword/internal/services" "github.com/gofiber/fiber/v2" "go.uber.org/zap" "time" ) type Deps struct { Logger *zap.Logger Service *services.RecoveryService DefaultURL string RecoveryURL string } type RecoveryController struct { logger *zap.Logger service *services.RecoveryService defaultURL string recoveryURL string } func NewRecoveryController(deps Deps) *RecoveryController { return &RecoveryController{ logger: deps.Logger, service: deps.Service, defaultURL: deps.DefaultURL, recoveryURL: deps.RecoveryURL, } } func (r *RecoveryController) HandleLiveness(c *fiber.Ctx) error { return c.SendStatus(fiber.StatusOK) } func (r *RecoveryController) HandlePingDB(c *fiber.Ctx) error { startTime := time.Now() if err := r.service.Ping(c.Context()); err != nil { r.logger.Error("Failed to ping the database", zap.Error(err)) return c.Status(fiber.StatusServiceUnavailable).SendString("DB ping failed") } duration := time.Since(startTime) durationMillis := duration.Milliseconds() responseMessage := fmt.Sprintf("DB ping success - Time taken: %d ms", durationMillis) return c.Status(fiber.StatusOK).SendString(responseMessage) }