From 16f2fc2ce4cbd43800f858f831dd9ea0d1f8fdfe Mon Sep 17 00:00:00 2001 From: bvandeusen Date: Sat, 18 Apr 2026 21:20:17 +0000 Subject: [PATCH] feat(skel): chi router with RequestID/Recoverer middleware and /healthz --- internal/server/server.go | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 internal/server/server.go diff --git a/internal/server/server.go b/internal/server/server.go new file mode 100644 index 00000000..ff2aec2c --- /dev/null +++ b/internal/server/server.go @@ -0,0 +1,33 @@ +package server + +import ( + "encoding/json" + "log/slog" + "net/http" + + "github.com/go-chi/chi/v5" + "github.com/go-chi/chi/v5/middleware" +) + +type Server struct { + Logger *slog.Logger +} + +func New(logger *slog.Logger) *Server { + return &Server{Logger: logger} +} + +func (s *Server) Router() http.Handler { + r := chi.NewRouter() + r.Use(middleware.RequestID) + r.Use(middleware.Recoverer) + + r.Get("/healthz", s.handleHealthz) + return r +} + +func (s *Server) handleHealthz(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _ = json.NewEncoder(w).Encode(map[string]string{"status": "ok"}) +}