51 lines
1.2 KiB
Go
51 lines
1.2 KiB
Go
|
package admin_recovery
|
||
|
|
||
|
import (
|
||
|
"codeword/internal/services"
|
||
|
"fmt"
|
||
|
"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)
|
||
|
}
|