2024-07-12 08:26:15 +00:00
|
|
|
package admin_recovery
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
2024-11-22 11:22:08 +00:00
|
|
|
"gitea.pena/PenaSide/codeword/internal/services"
|
2024-07-12 08:26:15 +00:00
|
|
|
"github.com/gofiber/fiber/v2"
|
|
|
|
"go.uber.org/zap"
|
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
|
|
|
type Deps struct {
|
2025-01-02 10:44:52 +00:00
|
|
|
Logger *zap.Logger
|
|
|
|
Service *services.RecoveryService
|
2024-07-12 08:26:15 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
type RecoveryController struct {
|
2025-01-02 10:44:52 +00:00
|
|
|
logger *zap.Logger
|
|
|
|
service *services.RecoveryService
|
2024-07-12 08:26:15 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func NewRecoveryController(deps Deps) *RecoveryController {
|
|
|
|
return &RecoveryController{
|
2025-01-02 10:44:52 +00:00
|
|
|
logger: deps.Logger,
|
|
|
|
service: deps.Service,
|
2024-07-12 08:26:15 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
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)
|
|
|
|
}
|