use std::collections::HashMap;
use serde::{Deserialize, Serialize};
use crate::{
attribute_value::AttributeValue,
types::{
AttributeDefinition, AttributeValueUpdate, BillingMode, Condition, ConditionalOperator,
ExpectedAttributeValue, GlobalSecondaryIndex, KeySchemaElement, KeysAndAttributes,
LocalSecondaryIndex, ProvisionedThroughput, ReturnConsumedCapacity,
ReturnItemCollectionMetrics, ReturnValue, SSESpecification, Select, StreamSpecification,
Tag, TimeToLiveSpecification, TransactGetItem, TransactWriteItem, WriteRequest,
},
};
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct CreateTableInput {
pub table_name: String,
pub key_schema: Vec<KeySchemaElement>,
#[serde(default)]
pub attribute_definitions: Vec<AttributeDefinition>,
#[serde(skip_serializing_if = "Option::is_none")]
pub billing_mode: Option<BillingMode>,
#[serde(skip_serializing_if = "Option::is_none")]
pub provisioned_throughput: Option<ProvisionedThroughput>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub global_secondary_indexes: Vec<GlobalSecondaryIndex>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub local_secondary_indexes: Vec<LocalSecondaryIndex>,
#[serde(skip_serializing_if = "Option::is_none")]
pub stream_specification: Option<StreamSpecification>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sse_specification: Option<SSESpecification>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub tags: Vec<Tag>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct DeleteTableInput {
pub table_name: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct UpdateTableInput {
pub table_name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub billing_mode: Option<BillingMode>,
#[serde(skip_serializing_if = "Option::is_none")]
pub provisioned_throughput: Option<ProvisionedThroughput>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub attribute_definitions: Vec<AttributeDefinition>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct DescribeTableInput {
pub table_name: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct ListTablesInput {
#[serde(skip_serializing_if = "Option::is_none")]
pub exclusive_start_table_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<i32>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct PutItemInput {
pub table_name: String,
pub item: HashMap<String, AttributeValue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub condition_expression: Option<String>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub expression_attribute_names: HashMap<String, String>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub expression_attribute_values: HashMap<String, AttributeValue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub return_values: Option<ReturnValue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub return_consumed_capacity: Option<ReturnConsumedCapacity>,
#[serde(skip_serializing_if = "Option::is_none")]
pub return_item_collection_metrics: Option<ReturnItemCollectionMetrics>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub expected: HashMap<String, ExpectedAttributeValue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub conditional_operator: Option<ConditionalOperator>,
#[serde(skip_serializing_if = "Option::is_none")]
pub return_values_on_condition_check_failure: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct GetItemInput {
pub table_name: String,
pub key: HashMap<String, AttributeValue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub consistent_read: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub projection_expression: Option<String>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub expression_attribute_names: HashMap<String, String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub return_consumed_capacity: Option<ReturnConsumedCapacity>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub attributes_to_get: Option<Vec<String>>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct UpdateItemInput {
pub table_name: String,
pub key: HashMap<String, AttributeValue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub update_expression: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub condition_expression: Option<String>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub expression_attribute_names: HashMap<String, String>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub expression_attribute_values: HashMap<String, AttributeValue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub return_values: Option<ReturnValue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub return_consumed_capacity: Option<ReturnConsumedCapacity>,
#[serde(skip_serializing_if = "Option::is_none")]
pub return_item_collection_metrics: Option<ReturnItemCollectionMetrics>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub attribute_updates: HashMap<String, AttributeValueUpdate>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub expected: HashMap<String, ExpectedAttributeValue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub conditional_operator: Option<ConditionalOperator>,
#[serde(skip_serializing_if = "Option::is_none")]
pub return_values_on_condition_check_failure: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct DeleteItemInput {
pub table_name: String,
pub key: HashMap<String, AttributeValue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub condition_expression: Option<String>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub expression_attribute_names: HashMap<String, String>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub expression_attribute_values: HashMap<String, AttributeValue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub return_values: Option<ReturnValue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub return_consumed_capacity: Option<ReturnConsumedCapacity>,
#[serde(skip_serializing_if = "Option::is_none")]
pub return_item_collection_metrics: Option<ReturnItemCollectionMetrics>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub expected: HashMap<String, ExpectedAttributeValue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub conditional_operator: Option<ConditionalOperator>,
#[serde(skip_serializing_if = "Option::is_none")]
pub return_values_on_condition_check_failure: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct QueryInput {
pub table_name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub index_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub key_condition_expression: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub filter_expression: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub projection_expression: Option<String>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub expression_attribute_names: HashMap<String, String>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub expression_attribute_values: HashMap<String, AttributeValue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub scan_index_forward: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<i32>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub exclusive_start_key: HashMap<String, AttributeValue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub select: Option<Select>,
#[serde(skip_serializing_if = "Option::is_none")]
pub consistent_read: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub return_consumed_capacity: Option<ReturnConsumedCapacity>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub key_conditions: HashMap<String, Condition>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub query_filter: HashMap<String, Condition>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub attributes_to_get: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub conditional_operator: Option<ConditionalOperator>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct ScanInput {
pub table_name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub index_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub filter_expression: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub projection_expression: Option<String>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub expression_attribute_names: HashMap<String, String>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub expression_attribute_values: HashMap<String, AttributeValue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<i32>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub exclusive_start_key: HashMap<String, AttributeValue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub segment: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub total_segments: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub select: Option<Select>,
#[serde(skip_serializing_if = "Option::is_none")]
pub consistent_read: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub return_consumed_capacity: Option<ReturnConsumedCapacity>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub scan_filter: HashMap<String, Condition>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub attributes_to_get: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub conditional_operator: Option<ConditionalOperator>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct BatchGetItemInput {
pub request_items: HashMap<String, KeysAndAttributes>,
#[serde(skip_serializing_if = "Option::is_none")]
pub return_consumed_capacity: Option<ReturnConsumedCapacity>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct BatchWriteItemInput {
pub request_items: HashMap<String, Vec<WriteRequest>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub return_consumed_capacity: Option<ReturnConsumedCapacity>,
#[serde(skip_serializing_if = "Option::is_none")]
pub return_item_collection_metrics: Option<ReturnItemCollectionMetrics>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct TagResourceInput {
pub resource_arn: String,
pub tags: Vec<Tag>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct UntagResourceInput {
pub resource_arn: String,
pub tag_keys: Vec<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct ListTagsOfResourceInput {
pub resource_arn: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub next_token: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct UpdateTimeToLiveInput {
pub table_name: String,
pub time_to_live_specification: TimeToLiveSpecification,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct DescribeTimeToLiveInput {
pub table_name: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct TransactWriteItemsInput {
pub transact_items: Vec<TransactWriteItem>,
#[serde(skip_serializing_if = "Option::is_none")]
pub return_consumed_capacity: Option<ReturnConsumedCapacity>,
#[serde(skip_serializing_if = "Option::is_none")]
pub return_item_collection_metrics: Option<ReturnItemCollectionMetrics>,
#[serde(skip_serializing_if = "Option::is_none")]
pub client_request_token: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct TransactGetItemsInput {
pub transact_items: Vec<TransactGetItem>,
#[serde(skip_serializing_if = "Option::is_none")]
pub return_consumed_capacity: Option<ReturnConsumedCapacity>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct DescribeLimitsInput {}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct DescribeEndpointsInput {}