Taobin-Recipe-Manager/server/routers/service_state.go
2024-02-22 15:46:36 +07:00

39 lines
857 B
Go

package routers
import (
"net/http"
"recipe-manager/data"
"github.com/go-chi/chi/v5"
)
type ServiceCheckRouter struct {
cache_db *data.RedisCli
// add service here!
}
func NewServiceCheckRouter(cache_db *data.RedisCli) *ServiceCheckRouter {
return &ServiceCheckRouter{cache_db: cache_db}
}
func (nscr *ServiceCheckRouter) Route(r chi.Router) {
r.Route("/health", func(r chi.Router) {
r.Get("/redis", nscr.RedisHealth)
})
}
func (nscr *ServiceCheckRouter) RedisHealth(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
// {status: online/offline}
err := nscr.cache_db.HealthCheck()
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte(`{"status":"Offline"}`))
return
}
// no error = online
w.WriteHeader(http.StatusOK)
w.Write([]byte(`{"status":"Online"}`))
}