use super::{Error, configuration, parse_response};
use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum ReadError {
Status400(models::ValidationErrorMessageResponse),
Status401(models::UnauthenticatedResponse),
Status403(models::ForbiddenResponse),
Status404(models::PathUnknownErrorMessageResponse),
Status409(models::AbortedMessageResponse),
Status422(models::UnprocessableContentMessageResponse),
Status500(models::InternalErrorMessageResponse),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum ReadChangesError {
Status400(models::ValidationErrorMessageResponse),
Status401(models::UnauthenticatedResponse),
Status403(models::ForbiddenResponse),
Status404(models::PathUnknownErrorMessageResponse),
Status409(models::AbortedMessageResponse),
Status422(models::UnprocessableContentMessageResponse),
Status500(models::InternalErrorMessageResponse),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum WriteError {
Status400(models::ValidationErrorMessageResponse),
Status401(models::UnauthenticatedResponse),
Status403(models::ForbiddenResponse),
Status404(models::PathUnknownErrorMessageResponse),
Status409(models::AbortedMessageResponse),
Status422(models::UnprocessableContentMessageResponse),
Status500(models::InternalErrorMessageResponse),
}
pub async fn read(
configuration: &configuration::Configuration,
store_id: &str,
body: models::ReadRequest,
) -> Result<models::ReadResponse, Error<ReadError>> {
let uri_str = format!(
"{}/stores/{store_id}/read",
configuration.base_path,
store_id = crate::apis::urlencode(store_id)
);
let req_builder = configuration
.client
.request(reqwest::Method::POST, &uri_str);
let req_builder = configuration.apply_to_request(req_builder);
let req_builder = req_builder.json(&body);
let resp = req_builder.send().await?;
parse_response(resp).await
}
pub async fn read_changes(
configuration: &configuration::Configuration,
store_id: &str,
r#type: Option<&str>,
page_size: Option<i32>,
continuation_token: Option<&str>,
start_time: Option<chrono::DateTime<chrono::FixedOffset>>,
) -> Result<models::ReadChangesResponse, Error<ReadChangesError>> {
let uri_str = format!(
"{}/stores/{store_id}/changes",
configuration.base_path,
store_id = crate::apis::urlencode(store_id)
);
let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
if let Some(param_value) = r#type {
req_builder = req_builder.query(&[("type", param_value)]);
}
if let Some(param_value) = page_size {
req_builder = req_builder.query(&[("page_size", param_value.to_string())]);
}
if let Some(param_value) = continuation_token {
req_builder = req_builder.query(&[("continuation_token", param_value)]);
}
if let Some(ref param_value) = start_time {
req_builder = req_builder.query(&[("start_time", ¶m_value.to_rfc3339())]);
}
let req_builder = configuration.apply_to_request(req_builder);
let resp = req_builder.send().await?;
parse_response(resp).await
}
pub async fn write(
configuration: &configuration::Configuration,
store_id: &str,
body: models::WriteRequest,
) -> Result<models::WriteResponse, Error<WriteError>> {
let uri_str = format!(
"{}/stores/{store_id}/write",
configuration.base_path,
store_id = crate::apis::urlencode(store_id)
);
let req_builder = configuration
.client
.request(reqwest::Method::POST, &uri_str);
let req_builder = configuration.apply_to_request(req_builder);
let req_builder = req_builder.json(&body);
let resp = req_builder.send().await?;
parse_response(resp).await
}