package middleware import ( "context" "log/slog" "net/http" "github.com/gofrs/uuid/v5" ) const TraceIdKey contextKey = "trace_id" func TraceMiddleware(logger *slog.Logger) func(http.Handler) http.Handler { return func(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { traceid, err := uuid.NewV4() if err != nil { logger.ErrorContext(r.Context(), err.Error()) } ctx := context.WithValue(r.Context(), TraceIdKey, traceid.String()) newReq := r.WithContext(ctx) next.ServeHTTP(w, newReq) }) } }