wyrd_runtime/
request_id.rs1use wyrd_spec::request_id::RequestId;
4
5pub const REQUEST_ID_HEADER: &str = "x-request-id";
7
8#[must_use]
14pub fn mint() -> RequestId {
15 let raw = uuid::Uuid::now_v7().to_string();
16 RequestId::parse(&raw)
17 .unwrap_or_else(|error| panic!("generated UUIDv7 did not validate as RequestId: {error}"))
18}
19
20#[derive(Debug, Clone, PartialEq, Eq)]
22pub struct RequestIdPropagation {
23 pub request_id: Option<RequestId>,
25 pub should_generate: bool,
27}
28
29#[must_use]
31pub fn inspect_header(value: Option<&str>) -> RequestIdPropagation {
32 match value.and_then(|value| RequestId::parse(value).ok()) {
33 Some(request_id) => RequestIdPropagation {
34 request_id: Some(request_id),
35 should_generate: false,
36 },
37 None => RequestIdPropagation {
38 request_id: None,
39 should_generate: true,
40 },
41 }
42}