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}