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}