typesense_rs/apis/
override_api.rs1use 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 OverrideApi: Send + Sync {
21 async fn get_search_override(
22 &self,
23 params: GetSearchOverrideParams,
24 ) -> Result<models::SearchOverride, Error<GetSearchOverrideError>>;
25}
26
27pub struct OverrideApiClient {
28 configuration: Arc<configuration::Configuration>,
29}
30
31impl OverrideApiClient {
32 pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
33 Self { configuration }
34 }
35}
36
37#[derive(Clone, Debug)]
39#[cfg_attr(feature = "bon", derive(::bon::Builder))]
40pub struct GetSearchOverrideParams {
41 pub collection_name: String,
43 pub override_id: String,
45}
46
47#[async_trait]
48impl OverrideApi for OverrideApiClient {
49 async fn get_search_override(
51 &self,
52 params: GetSearchOverrideParams,
53 ) -> Result<models::SearchOverride, Error<GetSearchOverrideError>> {
54 let GetSearchOverrideParams {
55 collection_name,
56 override_id,
57 } = params;
58
59 let local_var_configuration = &self.configuration;
60
61 let local_var_client = &local_var_configuration.client;
62
63 let local_var_uri_str = format!(
64 "{}/collections/{collectionName}/overrides/{overrideId}",
65 local_var_configuration.base_path,
66 collectionName = crate::apis::urlencode(collection_name),
67 overrideId = crate::apis::urlencode(override_id)
68 );
69 let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
70
71 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
72 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
73 }
74 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
75 let local_var_key = local_var_apikey.key.clone();
76 let local_var_value = match local_var_apikey.prefix {
77 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
78 None => local_var_key,
79 };
80 local_var_req_builder = local_var_req_builder.header("X-TYPESENSE-API-KEY", local_var_value);
81 };
82
83 let local_var_req = local_var_req_builder.build()?;
84 let local_var_resp = local_var_client.execute(local_var_req).await?;
85
86 let local_var_status = local_var_resp.status();
87 let local_var_content = local_var_resp.text().await?;
88
89 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
90 serde_json::from_str(&local_var_content).map_err(Error::from)
91 } else {
92 let local_var_entity: Option<GetSearchOverrideError> = serde_json::from_str(&local_var_content).ok();
93 let local_var_error = ResponseContent {
94 status: local_var_status,
95 content: local_var_content,
96 entity: local_var_entity,
97 };
98 Err(Error::ResponseError(local_var_error))
99 }
100 }
101}
102
103#[derive(Debug, Clone, Serialize, Deserialize)]
105#[serde(untagged)]
106pub enum GetSearchOverrideError {
107 UnknownValue(serde_json::Value),
108}