layer_climb_core/querier/
middleware.rs

1pub mod logger;
2pub mod retry;
3
4use crate::prelude::*;
5use logger::{QueryLoggerMiddlewareMapReq, QueryLoggerMiddlewareMapResp};
6use retry::QueryRetryMiddleware;
7
8pub enum QueryMiddlewareMapReq {
9    Logger(QueryLoggerMiddlewareMapReq),
10}
11
12impl QueryMiddlewareMapReq {
13    pub async fn map_req<REQ: QueryRequest>(&self, req: REQ) -> Result<REQ> {
14        match self {
15            Self::Logger(m) => m.map_req(req).await,
16        }
17    }
18    pub fn default_list() -> Vec<Self> {
19        vec![
20            //Self::Logger(QueryLoggerMiddlewareMapReq::default()),
21        ]
22    }
23}
24
25pub enum QueryMiddlewareMapResp {
26    Logger(QueryLoggerMiddlewareMapResp),
27}
28
29impl QueryMiddlewareMapResp {
30    pub async fn map_resp<RESP: std::fmt::Debug + Send>(&self, resp: RESP) -> Result<RESP> {
31        match self {
32            Self::Logger(m) => m.map_resp(resp).await,
33        }
34    }
35    pub fn default_list() -> Vec<Self> {
36        vec![
37            //Self::Logger(QueryLoggerMiddlewareMapResp::default()),
38        ]
39    }
40}
41
42pub enum QueryMiddlewareRun {
43    Retry(QueryRetryMiddleware),
44}
45
46impl QueryMiddlewareRun {
47    pub async fn run<REQ: QueryRequest>(
48        &self,
49        req: REQ,
50        client: QueryClient,
51    ) -> Result<REQ::QueryResponse> {
52        match self {
53            Self::Retry(m) => m.run(req, client).await,
54        }
55    }
56    pub fn default_list() -> Vec<Self> {
57        vec![Self::Retry(QueryRetryMiddleware::default())]
58    }
59}