diff --git a/crates/router/src/routes/metrics/request.rs b/crates/router/src/routes/metrics/request.rs index 487db67b1e..92f6d82378 100644 --- a/crates/router/src/routes/metrics/request.rs +++ b/crates/router/src/routes/metrics/request.rs @@ -1,6 +1,9 @@ use super::utils as metric_utils; -pub async fn record_request_time_metric(future: F, flow: router_env::Flow) -> R +pub async fn record_request_time_metric( + future: F, + flow: impl router_env::types::FlowMetric, +) -> R where F: futures::Future, { diff --git a/crates/router/src/services/api.rs b/crates/router/src/services/api.rs index 9fcd900ba4..3eae513010 100644 --- a/crates/router/src/services/api.rs +++ b/crates/router/src/services/api.rs @@ -522,7 +522,7 @@ where fields(request_method, request_url_path) )] pub async fn server_wrap<'a, 'b, A, T, U, Q, F, Fut, E>( - flow: router_env::Flow, + flow: impl router_env::types::FlowMetric, state: &'b A, request: &'a HttpRequest, payload: T, diff --git a/crates/router_env/src/logger/types.rs b/crates/router_env/src/logger/types.rs index dc0cab6a83..c2563956d8 100644 --- a/crates/router_env/src/logger/types.rs +++ b/crates/router_env/src/logger/types.rs @@ -164,6 +164,12 @@ pub enum Flow { ApiKeyList, } +/// +/// Trait for providing generic behaviour to flow metric +/// +pub trait FlowMetric: ToString + std::fmt::Debug {} +impl FlowMetric for Flow {} + /// Category of log event. #[derive(Debug)] pub enum Category {