45 lines
1.2 KiB
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)
|
|
}
|