39 lines
857 B
Go
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"}`))
|
|
|
|
}
|