layer_climb_core/querier/
middleware.rs1pub 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 ]
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 ]
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}