|
@@ -0,0 +1,40 @@
|
|
|
|
|
+package server
|
|
|
|
|
+
|
|
|
|
|
+import (
|
|
|
|
|
+ "encoding/json"
|
|
|
|
|
+ "net/http"
|
|
|
|
|
+
|
|
|
|
|
+ "github.com/felamaslen/gmus-backend/pkg/config"
|
|
|
|
|
+ "github.com/felamaslen/gmus-backend/pkg/logger"
|
|
|
|
|
+ "github.com/gorilla/mux"
|
|
|
|
|
+ "github.com/jmoiron/sqlx"
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
|
|
+func healthRoutes(l *logger.Logger, router *mux.Router) {
|
|
|
|
|
+ resOk, _ := json.Marshal(map[string]bool{"ok": true})
|
|
|
|
|
+ resNotOk, _ := json.Marshal(map[string]bool{"ok": false})
|
|
|
|
|
+
|
|
|
|
|
+ router.Path("/liveness").Methods("GET").HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
|
|
|
+ w.Write(resOk)
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ var isReady = false
|
|
|
|
|
+
|
|
|
|
|
+ router.Path("/readiness").Methods("GET").HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
|
|
|
+ if !isReady {
|
|
|
|
|
+ db, err := sqlx.Connect("pgx", config.GetConfig().DatabaseUrl)
|
|
|
|
|
+ if err == nil {
|
|
|
|
|
+ _, err = db.Query("select version()")
|
|
|
|
|
+ }
|
|
|
|
|
+ if err == nil {
|
|
|
|
|
+ isReady = true
|
|
|
|
|
+ } else {
|
|
|
|
|
+ l.Error("[readiness] Error getting connection: %v\n", err)
|
|
|
|
|
+ http.Error(w, "Could not get database connection", http.StatusInternalServerError)
|
|
|
|
|
+ w.Write(resNotOk)
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ w.Write(resOk)
|
|
|
|
|
+ })
|
|
|
|
|
+}
|