use klauthed_core::context::RequestContext;
use tracing::field::Empty;
pub fn request_span(ctx: &RequestContext) -> tracing::Span {
let span = tracing::info_span!(
"request",
request_id = %ctx.request_id(),
correlation_id = Empty,
tenant = Empty,
principal = Empty,
locale = Empty,
);
record_optional_fields(&span, ctx);
span
}
pub(crate) fn record_optional_fields(span: &tracing::Span, ctx: &RequestContext) {
if let Some(correlation_id) = ctx.correlation_id() {
span.record("correlation_id", correlation_id);
}
if let Some(tenant) = ctx.tenant() {
span.record("tenant", tenant);
}
if let Some(principal) = ctx.principal() {
span.record("principal", principal);
}
if let Some(locale) = ctx.locale() {
span.record("locale", locale);
}
}