Skip to main content

tracedb_sdk/api/resources/tracedb/query/
tracedb_query.rs

1use crate::api::*;
2use crate::{ApiError, ClientConfig, HttpClient, RequestOptions};
3use reqwest::Method;
4
5pub struct QueryClient {
6    pub http_client: HttpClient,
7}
8
9impl QueryClient {
10    pub fn new(config: ClientConfig) -> Result<Self, ApiError> {
11        Ok(Self {
12            http_client: HttpClient::new(config.clone())?,
13        })
14    }
15
16    /// Current TraceDB v1 product route. This OpenAPI artifact is generated from the checked-in route manifest.
17    ///
18    /// # Arguments
19    ///
20    /// * `options` - Additional request options such as headers, timeout, etc.
21    ///
22    /// # Returns
23    ///
24    /// JSON response from the API
25    pub async fn post_explain(
26        &self,
27        request: &HybridQuery,
28        options: Option<RequestOptions>,
29    ) -> Result<HybridExplain, ApiError> {
30        self.http_client
31            .execute_request(
32                Method::POST,
33                "v1/explain",
34                Some(serde_json::to_value(request).map_err(ApiError::Serialization)?),
35                None,
36                options,
37            )
38            .await
39    }
40
41    /// Current TraceDB v1 product route. This OpenAPI artifact is generated from the checked-in route manifest.
42    ///
43    /// # Arguments
44    ///
45    /// * `options` - Additional request options such as headers, timeout, etc.
46    ///
47    /// # Returns
48    ///
49    /// JSON response from the API
50    pub async fn post_graphql(
51        &self,
52        request: &GraphQlQueryRequest,
53        options: Option<RequestOptions>,
54    ) -> Result<GraphQlResponse, ApiError> {
55        self.http_client
56            .execute_request(
57                Method::POST,
58                "v1/graphql",
59                Some(serde_json::to_value(request).map_err(ApiError::Serialization)?),
60                None,
61                options,
62            )
63            .await
64    }
65
66    /// Current TraceDB v1 product route. This OpenAPI artifact is generated from the checked-in route manifest.
67    ///
68    /// # Arguments
69    ///
70    /// * `options` - Additional request options such as headers, timeout, etc.
71    ///
72    /// # Returns
73    ///
74    /// JSON response from the API
75    pub async fn post_graphql_bounded(
76        &self,
77        request: &GraphQlQueryRequest,
78        options: Option<RequestOptions>,
79    ) -> Result<QueryResponse, ApiError> {
80        self.http_client
81            .execute_request(
82                Method::POST,
83                "v1/graphql/bounded",
84                Some(serde_json::to_value(request).map_err(ApiError::Serialization)?),
85                None,
86                options,
87            )
88            .await
89    }
90
91    /// Current TraceDB v1 product route. This OpenAPI artifact is generated from the checked-in route manifest.
92    ///
93    /// # Arguments
94    ///
95    /// * `options` - Additional request options such as headers, timeout, etc.
96    ///
97    /// # Returns
98    ///
99    /// JSON response from the API
100    pub async fn get_graphql_schema(
101        &self,
102        options: Option<RequestOptions>,
103    ) -> Result<GraphQlSchemaResponse, ApiError> {
104        self.http_client
105            .execute_request(Method::GET, "v1/graphql/schema", None, None, options)
106            .await
107    }
108
109    /// Current TraceDB v1 product route. This OpenAPI artifact is generated from the checked-in route manifest.
110    ///
111    /// # Arguments
112    ///
113    /// * `options` - Additional request options such as headers, timeout, etc.
114    ///
115    /// # Returns
116    ///
117    /// JSON response from the API
118    pub async fn post_query(
119        &self,
120        request: &HybridQuery,
121        options: Option<RequestOptions>,
122    ) -> Result<QueryResponse, ApiError> {
123        self.http_client
124            .execute_request(
125                Method::POST,
126                "v1/query",
127                Some(serde_json::to_value(request).map_err(ApiError::Serialization)?),
128                None,
129                options,
130            )
131            .await
132    }
133
134    /// Current TraceDB v1 product route. This OpenAPI artifact is generated from the checked-in route manifest.
135    ///
136    /// # Arguments
137    ///
138    /// * `options` - Additional request options such as headers, timeout, etc.
139    ///
140    /// # Returns
141    ///
142    /// JSON response from the API
143    pub async fn post_traceql(
144        &self,
145        request: &TraceQlQueryRequest,
146        options: Option<RequestOptions>,
147    ) -> Result<QueryResponse, ApiError> {
148        self.http_client
149            .execute_request(
150                Method::POST,
151                "v1/traceql",
152                Some(serde_json::to_value(request).map_err(ApiError::Serialization)?),
153                None,
154                options,
155            )
156            .await
157    }
158}