1package web
2
3import (
4 "context"
5 "net/http"
6
7 "github.com/charmbracelet/log/v2"
8 "github.com/charmbracelet/soft-serve/pkg/db"
9 "github.com/gorilla/mux"
10)
11
12// HealthController registers the health check routes for the web server.
13func HealthController(_ context.Context, r *mux.Router) {
14 r.HandleFunc("/livez", getLiveness)
15 r.HandleFunc("/readyz", getReadiness)
16}
17
18func getLiveness(w http.ResponseWriter, _ *http.Request) {
19 renderStatus(http.StatusOK)(w, nil)
20}
21
22func getReadiness(w http.ResponseWriter, r *http.Request) {
23 ctx := r.Context()
24 logger := log.FromContext(ctx)
25 db := db.FromContext(ctx)
26
27 if err := db.PingContext(ctx); err != nil {
28 logger.Error("error getting db readiness", "err", err)
29 renderStatus(http.StatusServiceUnavailable)(w, nil)
30 return
31 }
32
33 renderStatus(http.StatusOK)(w, nil)
34}