typesense_rs/apis/
curation_api.rs

1// Typesense API
2//
3// An open source search engine for building delightful search experiences.
4//
5// The version of the OpenAPI document: 27.0
6//
7// Generated by: https://openapi-generator.tech
8
9use std::sync::Arc;
10
11use async_trait::async_trait;
12use reqwest;
13use serde::{Deserialize, Serialize};
14
15use super::{configuration, Error};
16use crate::apis::ResponseContent;
17use crate::models;
18
19#[async_trait]
20pub trait CurationApi: Send + Sync {
21	async fn delete_search_override(
22		&self,
23		params: DeleteSearchOverrideParams,
24	) -> Result<models::SearchOverride, Error<DeleteSearchOverrideError>>;
25	async fn get_search_overrides(
26		&self,
27		params: GetSearchOverridesParams,
28	) -> Result<models::SearchOverridesResponse, Error<GetSearchOverridesError>>;
29	async fn upsert_search_override(
30		&self,
31		params: UpsertSearchOverrideParams,
32	) -> Result<models::SearchOverride, Error<UpsertSearchOverrideError>>;
33}
34
35pub struct CurationApiClient {
36	configuration: Arc<configuration::Configuration>,
37}
38
39impl CurationApiClient {
40	pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
41		Self { configuration }
42	}
43}
44
45/// struct for passing parameters to the method [`delete_search_override`]
46#[derive(Clone, Debug)]
47#[cfg_attr(feature = "bon", derive(::bon::Builder))]
48pub struct DeleteSearchOverrideParams {
49	/// The name of the collection
50	pub collection_name: String,
51	/// The ID of the search override to delete
52	pub override_id: String,
53}
54
55/// struct for passing parameters to the method [`get_search_overrides`]
56#[derive(Clone, Debug)]
57#[cfg_attr(feature = "bon", derive(::bon::Builder))]
58pub struct GetSearchOverridesParams {
59	/// The name of the collection
60	pub collection_name: String,
61}
62
63/// struct for passing parameters to the method [`upsert_search_override`]
64#[derive(Clone, Debug)]
65#[cfg_attr(feature = "bon", derive(::bon::Builder))]
66pub struct UpsertSearchOverrideParams {
67	/// The name of the collection
68	pub collection_name: String,
69	/// The ID of the search override to create/update
70	pub override_id: String,
71	/// The search override object to be created/updated
72	pub search_override_schema: models::SearchOverrideSchema,
73}
74
75#[async_trait]
76impl CurationApi for CurationApiClient {
77	async fn delete_search_override(
78		&self,
79		params: DeleteSearchOverrideParams,
80	) -> Result<models::SearchOverride, Error<DeleteSearchOverrideError>> {
81		let DeleteSearchOverrideParams {
82			collection_name,
83			override_id,
84		} = params;
85
86		let local_var_configuration = &self.configuration;
87
88		let local_var_client = &local_var_configuration.client;
89
90		let local_var_uri_str = format!(
91			"{}/collections/{collectionName}/overrides/{overrideId}",
92			local_var_configuration.base_path,
93			collectionName = crate::apis::urlencode(collection_name),
94			overrideId = crate::apis::urlencode(override_id)
95		);
96		let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
97
98		if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
99			local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
100		}
101		if let Some(ref local_var_apikey) = local_var_configuration.api_key {
102			let local_var_key = local_var_apikey.key.clone();
103			let local_var_value = match local_var_apikey.prefix {
104				Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
105				None => local_var_key,
106			};
107			local_var_req_builder = local_var_req_builder.header("X-TYPESENSE-API-KEY", local_var_value);
108		};
109
110		let local_var_req = local_var_req_builder.build()?;
111		let local_var_resp = local_var_client.execute(local_var_req).await?;
112
113		let local_var_status = local_var_resp.status();
114		let local_var_content = local_var_resp.text().await?;
115
116		if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
117			serde_json::from_str(&local_var_content).map_err(Error::from)
118		} else {
119			let local_var_entity: Option<DeleteSearchOverrideError> = serde_json::from_str(&local_var_content).ok();
120			let local_var_error = ResponseContent {
121				status: local_var_status,
122				content: local_var_content,
123				entity: local_var_entity,
124			};
125			Err(Error::ResponseError(local_var_error))
126		}
127	}
128
129	async fn get_search_overrides(
130		&self,
131		params: GetSearchOverridesParams,
132	) -> Result<models::SearchOverridesResponse, Error<GetSearchOverridesError>> {
133		let GetSearchOverridesParams { collection_name } = params;
134
135		let local_var_configuration = &self.configuration;
136
137		let local_var_client = &local_var_configuration.client;
138
139		let local_var_uri_str = format!(
140			"{}/collections/{collectionName}/overrides",
141			local_var_configuration.base_path,
142			collectionName = crate::apis::urlencode(collection_name)
143		);
144		let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
145
146		if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
147			local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
148		}
149		if let Some(ref local_var_apikey) = local_var_configuration.api_key {
150			let local_var_key = local_var_apikey.key.clone();
151			let local_var_value = match local_var_apikey.prefix {
152				Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
153				None => local_var_key,
154			};
155			local_var_req_builder = local_var_req_builder.header("X-TYPESENSE-API-KEY", local_var_value);
156		};
157
158		let local_var_req = local_var_req_builder.build()?;
159		let local_var_resp = local_var_client.execute(local_var_req).await?;
160
161		let local_var_status = local_var_resp.status();
162		let local_var_content = local_var_resp.text().await?;
163
164		if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
165			serde_json::from_str(&local_var_content).map_err(Error::from)
166		} else {
167			let local_var_entity: Option<GetSearchOverridesError> = serde_json::from_str(&local_var_content).ok();
168			let local_var_error = ResponseContent {
169				status: local_var_status,
170				content: local_var_content,
171				entity: local_var_entity,
172			};
173			Err(Error::ResponseError(local_var_error))
174		}
175	}
176
177	/// Create or update an override to promote certain documents over others.
178	/// Using overrides, you can include or exclude specific documents for a
179	/// given query.
180	async fn upsert_search_override(
181		&self,
182		params: UpsertSearchOverrideParams,
183	) -> Result<models::SearchOverride, Error<UpsertSearchOverrideError>> {
184		let UpsertSearchOverrideParams {
185			collection_name,
186			override_id,
187			search_override_schema,
188		} = params;
189
190		let local_var_configuration = &self.configuration;
191
192		let local_var_client = &local_var_configuration.client;
193
194		let local_var_uri_str = format!(
195			"{}/collections/{collectionName}/overrides/{overrideId}",
196			local_var_configuration.base_path,
197			collectionName = crate::apis::urlencode(collection_name),
198			overrideId = crate::apis::urlencode(override_id)
199		);
200		let mut local_var_req_builder = local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
201
202		if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
203			local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
204		}
205		if let Some(ref local_var_apikey) = local_var_configuration.api_key {
206			let local_var_key = local_var_apikey.key.clone();
207			let local_var_value = match local_var_apikey.prefix {
208				Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
209				None => local_var_key,
210			};
211			local_var_req_builder = local_var_req_builder.header("X-TYPESENSE-API-KEY", local_var_value);
212		};
213		local_var_req_builder = local_var_req_builder.json(&search_override_schema);
214
215		let local_var_req = local_var_req_builder.build()?;
216		let local_var_resp = local_var_client.execute(local_var_req).await?;
217
218		let local_var_status = local_var_resp.status();
219		let local_var_content = local_var_resp.text().await?;
220
221		if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
222			serde_json::from_str(&local_var_content).map_err(Error::from)
223		} else {
224			let local_var_entity: Option<UpsertSearchOverrideError> = serde_json::from_str(&local_var_content).ok();
225			let local_var_error = ResponseContent {
226				status: local_var_status,
227				content: local_var_content,
228				entity: local_var_entity,
229			};
230			Err(Error::ResponseError(local_var_error))
231		}
232	}
233}
234
235/// struct for typed errors of method [`delete_search_override`]
236#[derive(Debug, Clone, Serialize, Deserialize)]
237#[serde(untagged)]
238pub enum DeleteSearchOverrideError {
239	Status404(models::ApiResponse),
240	UnknownValue(serde_json::Value),
241}
242
243/// struct for typed errors of method [`get_search_overrides`]
244#[derive(Debug, Clone, Serialize, Deserialize)]
245#[serde(untagged)]
246pub enum GetSearchOverridesError {
247	UnknownValue(serde_json::Value),
248}
249
250/// struct for typed errors of method [`upsert_search_override`]
251#[derive(Debug, Clone, Serialize, Deserialize)]
252#[serde(untagged)]
253pub enum UpsertSearchOverrideError {
254	Status404(models::ApiResponse),
255	UnknownValue(serde_json::Value),
256}