scaleway_api_rs/apis/
databases_api.rs1use reqwest;
12
13use super::{configuration, Error};
14use crate::apis::ResponseContent;
15
16#[derive(Debug, Clone, Serialize, Deserialize)]
18#[serde(untagged)]
19pub enum CreateDatabaseError {
20 UnknownValue(serde_json::Value),
21}
22
23#[derive(Debug, Clone, Serialize, Deserialize)]
25#[serde(untagged)]
26pub enum DeleteDatabaseError {
27 UnknownValue(serde_json::Value),
28}
29
30#[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}