use std::collections::HashMap;
use serde::{Deserialize, Serialize};
use crate::{
attribute_value::AttributeValue,
types::{
ConsumedCapacity, ItemCollectionMetrics, ItemResponse, KeysAndAttributes, TableDescription,
Tag, TimeToLiveDescription, TimeToLiveSpecification, WriteRequest,
},
};
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct CreateTableOutput {
#[serde(skip_serializing_if = "Option::is_none")]
pub table_description: Option<TableDescription>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct DeleteTableOutput {
#[serde(skip_serializing_if = "Option::is_none")]
pub table_description: Option<TableDescription>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct DescribeTableOutput {
#[serde(rename = "Table", skip_serializing_if = "Option::is_none")]
pub table: Option<TableDescription>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct UpdateTableOutput {
#[serde(skip_serializing_if = "Option::is_none")]
pub table_description: Option<TableDescription>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct ListTablesOutput {
#[serde(default)]
pub table_names: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub last_evaluated_table_name: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct PutItemOutput {
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub attributes: HashMap<String, AttributeValue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub consumed_capacity: Option<ConsumedCapacity>,
#[serde(skip_serializing_if = "Option::is_none")]
pub item_collection_metrics: Option<ItemCollectionMetrics>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct GetItemOutput {
#[serde(skip_serializing_if = "Option::is_none")]
pub item: Option<HashMap<String, AttributeValue>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub consumed_capacity: Option<ConsumedCapacity>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct UpdateItemOutput {
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub attributes: HashMap<String, AttributeValue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub consumed_capacity: Option<ConsumedCapacity>,
#[serde(skip_serializing_if = "Option::is_none")]
pub item_collection_metrics: Option<ItemCollectionMetrics>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct DeleteItemOutput {
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub attributes: HashMap<String, AttributeValue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub consumed_capacity: Option<ConsumedCapacity>,
#[serde(skip_serializing_if = "Option::is_none")]
pub item_collection_metrics: Option<ItemCollectionMetrics>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct QueryOutput {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub items: Option<Vec<HashMap<String, AttributeValue>>>,
pub count: i32,
pub scanned_count: i32,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub last_evaluated_key: HashMap<String, AttributeValue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub consumed_capacity: Option<ConsumedCapacity>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct ScanOutput {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub items: Option<Vec<HashMap<String, AttributeValue>>>,
pub count: i32,
pub scanned_count: i32,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub last_evaluated_key: HashMap<String, AttributeValue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub consumed_capacity: Option<ConsumedCapacity>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct BatchGetItemOutput {
#[serde(default)]
pub responses: HashMap<String, Vec<HashMap<String, AttributeValue>>>,
#[serde(default)]
pub unprocessed_keys: HashMap<String, KeysAndAttributes>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub consumed_capacity: Vec<ConsumedCapacity>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct BatchWriteItemOutput {
#[serde(default)]
pub unprocessed_items: HashMap<String, Vec<WriteRequest>>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub item_collection_metrics: HashMap<String, Vec<ItemCollectionMetrics>>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub consumed_capacity: Vec<ConsumedCapacity>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct TagResourceOutput {}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct UntagResourceOutput {}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct ListTagsOfResourceOutput {
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<Tag>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub next_token: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct UpdateTimeToLiveOutput {
#[serde(skip_serializing_if = "Option::is_none")]
pub time_to_live_specification: Option<TimeToLiveSpecification>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct DescribeTimeToLiveOutput {
#[serde(skip_serializing_if = "Option::is_none")]
pub time_to_live_description: Option<TimeToLiveDescription>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct TransactWriteItemsOutput {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub consumed_capacity: Vec<ConsumedCapacity>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub item_collection_metrics: HashMap<String, Vec<ItemCollectionMetrics>>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct TransactGetItemsOutput {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub consumed_capacity: Vec<ConsumedCapacity>,
#[serde(skip_serializing_if = "Option::is_none")]
pub responses: Option<Vec<ItemResponse>>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct DescribeLimitsOutput {
#[serde(skip_serializing_if = "Option::is_none")]
pub account_max_read_capacity_units: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub account_max_write_capacity_units: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub table_max_read_capacity_units: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub table_max_write_capacity_units: Option<i64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct DescribeEndpointsOutput {
pub endpoints: Vec<Endpoint>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct Endpoint {
pub address: String,
pub cache_period_in_minutes: i64,
}