scaleway_api_rs/apis/
databases_api.rs

1/*
2 * Account API
3 *
4 * # Introduction  The Account API allows you to manage projects. Project is Scaleway’s resource management feature. Designed to help you organize your infrastructure and cloud services, the feature allows resources to be isolated and grouped into specific projects.
5 *
6 * The version of the OpenAPI document: v2
7 *
8 * Generated by: https://openapi-generator.tech
9 */
10
11use reqwest;
12
13use super::{configuration, Error};
14use crate::apis::ResponseContent;
15
16/// struct for typed errors of method [`create_database`]
17#[derive(Debug, Clone, Serialize, Deserialize)]
18#[serde(untagged)]
19pub enum CreateDatabaseError {
20    UnknownValue(serde_json::Value),
21}
22
23/// struct for typed errors of method [`delete_database`]
24#[derive(Debug, Clone, Serialize, Deserialize)]
25#[serde(untagged)]
26pub enum DeleteDatabaseError {
27    UnknownValue(serde_json::Value),
28}
29
30/// struct for typed errors of method [`list_databases`]
31#[derive(Debug, Clone, Serialize, Deserialize)]
32#[serde(untagged)]
33pub enum ListDatabasesError {
34    UnknownValue(serde_json::Value),
35}
36
37pub async fn create_database(
38    configuration: &configuration::Configuration,
39    region: &str,
40    instance_id: &str,
41    create_database_request: crate::models::CreateDatabaseRequest,
42) -> Result<crate::models::ScalewayPeriodRdbPeriodV1PeriodDatabase, Error<CreateDatabaseError>> {
43    let local_var_configuration = configuration;
44
45    let local_var_client = &local_var_configuration.client;
46
47    let local_var_uri_str = format!(
48        "{}/rdb/v1/regions/{region}/instances/{instance_id}/databases",
49        local_var_configuration.base_path,
50        region = crate::apis::urlencode(region),
51        instance_id = crate::apis::urlencode(instance_id)
52    );
53    let mut local_var_req_builder =
54        local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
55
56    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
57        local_var_req_builder =
58            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
59    }
60    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
61        let local_var_key = local_var_apikey.key.clone();
62        let local_var_value = match local_var_apikey.prefix {
63            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
64            None => local_var_key,
65        };
66        local_var_req_builder = local_var_req_builder.header("X-Auth-Token", local_var_value);
67    };
68    local_var_req_builder = local_var_req_builder.json(&create_database_request);
69
70    let local_var_req = local_var_req_builder.build()?;
71    let local_var_resp = local_var_client.execute(local_var_req).await?;
72
73    let local_var_status = local_var_resp.status();
74    let local_var_content = local_var_resp.text().await?;
75
76    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
77        serde_json::from_str(&local_var_content).map_err(Error::from)
78    } else {
79        let local_var_entity: Option<CreateDatabaseError> =
80            serde_json::from_str(&local_var_content).ok();
81        let local_var_error = ResponseContent {
82            status: local_var_status,
83            content: local_var_content,
84            entity: local_var_entity,
85        };
86        Err(Error::ResponseError(local_var_error))
87    }
88}
89
90pub async fn delete_database(
91    configuration: &configuration::Configuration,
92    region: &str,
93    instance_id: &str,
94    name: &str,
95) -> Result<(), Error<DeleteDatabaseError>> {
96    let local_var_configuration = configuration;
97
98    let local_var_client = &local_var_configuration.client;
99
100    let local_var_uri_str = format!(
101        "{}/rdb/v1/regions/{region}/instances/{instance_id}/databases/{name}",
102        local_var_configuration.base_path,
103        region = crate::apis::urlencode(region),
104        instance_id = crate::apis::urlencode(instance_id),
105        name = crate::apis::urlencode(name)
106    );
107    let mut local_var_req_builder =
108        local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
109
110    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
111        local_var_req_builder =
112            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
113    }
114    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
115        let local_var_key = local_var_apikey.key.clone();
116        let local_var_value = match local_var_apikey.prefix {
117            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
118            None => local_var_key,
119        };
120        local_var_req_builder = local_var_req_builder.header("X-Auth-Token", local_var_value);
121    };
122
123    let local_var_req = local_var_req_builder.build()?;
124    let local_var_resp = local_var_client.execute(local_var_req).await?;
125
126    let local_var_status = local_var_resp.status();
127    let local_var_content = local_var_resp.text().await?;
128
129    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
130        Ok(())
131    } else {
132        let local_var_entity: Option<DeleteDatabaseError> =
133            serde_json::from_str(&local_var_content).ok();
134        let local_var_error = ResponseContent {
135            status: local_var_status,
136            content: local_var_content,
137            entity: local_var_entity,
138        };
139        Err(Error::ResponseError(local_var_error))
140    }
141}
142
143pub async fn list_databases(
144    configuration: &configuration::Configuration,
145    region: &str,
146    instance_id: &str,
147    name: Option<&str>,
148    managed: Option<bool>,
149    owner: Option<&str>,
150    order_by: Option<&str>,
151    page: Option<i32>,
152    page_size: Option<i32>,
153) -> Result<
154    crate::models::ScalewayPeriodRdbPeriodV1PeriodListDatabasesResponse,
155    Error<ListDatabasesError>,
156> {
157    let local_var_configuration = configuration;
158
159    let local_var_client = &local_var_configuration.client;
160
161    let local_var_uri_str = format!(
162        "{}/rdb/v1/regions/{region}/instances/{instance_id}/databases",
163        local_var_configuration.base_path,
164        region = crate::apis::urlencode(region),
165        instance_id = crate::apis::urlencode(instance_id)
166    );
167    let mut local_var_req_builder =
168        local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
169
170    if let Some(ref local_var_str) = name {
171        local_var_req_builder =
172            local_var_req_builder.query(&[("name", &local_var_str.to_string())]);
173    }
174    if let Some(ref local_var_str) = managed {
175        local_var_req_builder =
176            local_var_req_builder.query(&[("managed", &local_var_str.to_string())]);
177    }
178    if let Some(ref local_var_str) = owner {
179        local_var_req_builder =
180            local_var_req_builder.query(&[("owner", &local_var_str.to_string())]);
181    }
182    if let Some(ref local_var_str) = order_by {
183        local_var_req_builder =
184            local_var_req_builder.query(&[("order_by", &local_var_str.to_string())]);
185    }
186    if let Some(ref local_var_str) = page {
187        local_var_req_builder =
188            local_var_req_builder.query(&[("page", &local_var_str.to_string())]);
189    }
190    if let Some(ref local_var_str) = page_size {
191        local_var_req_builder =
192            local_var_req_builder.query(&[("page_size", &local_var_str.to_string())]);
193    }
194    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
195        local_var_req_builder =
196            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
197    }
198    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
199        let local_var_key = local_var_apikey.key.clone();
200        let local_var_value = match local_var_apikey.prefix {
201            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
202            None => local_var_key,
203        };
204        local_var_req_builder = local_var_req_builder.header("X-Auth-Token", local_var_value);
205    };
206
207    let local_var_req = local_var_req_builder.build()?;
208    let local_var_resp = local_var_client.execute(local_var_req).await?;
209
210    let local_var_status = local_var_resp.status();
211    let local_var_content = local_var_resp.text().await?;
212
213    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
214        serde_json::from_str(&local_var_content).map_err(Error::from)
215    } else {
216        let local_var_entity: Option<ListDatabasesError> =
217            serde_json::from_str(&local_var_content).ok();
218        let local_var_error = ResponseContent {
219            status: local_var_status,
220            content: local_var_content,
221            entity: local_var_entity,
222        };
223        Err(Error::ResponseError(local_var_error))
224    }
225}