verification/internal/controllers/admin/health_check/health_check.go

45 lines
1.2 KiB
Go

package health_check
import (
"gitea.pena/PenaSide/verification/internal/client"
"gitea.pena/PenaSide/verification/internal/repository"
"github.com/gofiber/fiber/v2"
)
type Deps struct {
TgClient *client.Telegram
Repository *repository.VerificationRepository
}
type HealthCheck struct {
tgClient *client.Telegram
repository *repository.VerificationRepository
}
func NewHealthCheck(deps Deps) *HealthCheck {
return &HealthCheck{
tgClient: deps.TgClient,
repository: deps.Repository,
}
}
func (receiver *HealthCheck) Liveness(ctx *fiber.Ctx) error {
return ctx.SendStatus(fiber.StatusOK)
}
func (receiver *HealthCheck) Readiness(ctx *fiber.Ctx) error {
if err := receiver.repository.CheckMongoDB(); err != nil {
return ctx.Status(fiber.StatusServiceUnavailable).SendString("mongoDB is unavailable: " + err.Error())
}
if err := receiver.tgClient.Ping(); err != nil {
return ctx.Status(fiber.StatusServiceUnavailable).SendString("could not connect to Telegram: " + err.Error())
}
if err := receiver.repository.CheckS3(); err != nil {
return ctx.Status(fiber.StatusServiceUnavailable).SendString("could not connect to S3: " + err.Error())
}
return ctx.SendStatus(fiber.StatusOK)
}