package handlers import ( "net/http" "github.com/gin-gonic/gin" "gorm.io/gorm" "github.com/llamalink/llamalink/internal/llama" ) type HealthHandler struct { db *gorm.DB manager *llama.Manager } func NewHealthHandler(db *gorm.DB, manager *llama.Manager) *HealthHandler { return &HealthHandler{db: db, manager: manager} } func (h *HealthHandler) Health(c *gin.Context) { c.JSON(http.StatusOK, gin.H{ "status": "ok", }) } func (h *HealthHandler) Ready(c *gin.Context) { // Check DB sqlDB, err := h.db.DB() if err != nil { c.JSON(http.StatusServiceUnavailable, gin.H{ "status": "not_ready", "database": "error", }) return } if err := sqlDB.Ping(); err != nil { c.JSON(http.StatusServiceUnavailable, gin.H{ "status": "not_ready", "database": "unhealthy", }) return } // Check model manager modelReady := h.manager == nil || h.manager.IsReady() modelName := "" if h.manager != nil { modelName = h.manager.CurrentModel() } c.JSON(http.StatusOK, gin.H{ "status": "ready", "database": "ok", "model_active": modelReady, "model_name": modelName, }) }