45 lines
704 B
Go
45 lines
704 B
Go
package handler
|
|
|
|
import (
|
|
"database/sql"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/vaultdrop/backend/pkg/api"
|
|
)
|
|
|
|
type HealthHandler struct {
|
|
db *sql.DB
|
|
ocr interface{ HealthCheck() error }
|
|
}
|
|
|
|
func (h *HealthHandler) Check(c *gin.Context) {
|
|
checks := gin.H{}
|
|
|
|
dbErr := h.db.Ping()
|
|
if dbErr != nil {
|
|
checks["database"] = "error: " + dbErr.Error()
|
|
} else {
|
|
checks["database"] = "ok"
|
|
}
|
|
|
|
ocrErr := h.ocr.HealthCheck()
|
|
if ocrErr != nil {
|
|
checks["ocr"] = "error: " + ocrErr.Error()
|
|
} else {
|
|
checks["ocr"] = "ok"
|
|
}
|
|
|
|
status := "healthy"
|
|
for _, v := range checks {
|
|
if v != "ok" {
|
|
status = "degraded"
|
|
break
|
|
}
|
|
}
|
|
|
|
api.Success(c, gin.H{
|
|
"status": status,
|
|
"checks": checks,
|
|
})
|
|
}
|