1use std::collections::HashMap;
8
9use serde::{Deserialize, Serialize};
10
11use crate::{
12 attribute_value::AttributeValue,
13 types::{
14 AttributeDefinition, AttributeValueUpdate, BillingMode, Condition, ConditionalOperator,
15 ExpectedAttributeValue, GlobalSecondaryIndex, KeySchemaElement, KeysAndAttributes,
16 LocalSecondaryIndex, ProvisionedThroughput, ReturnConsumedCapacity,
17 ReturnItemCollectionMetrics, ReturnValue, SSESpecification, Select, StreamSpecification,
18 Tag, TimeToLiveSpecification, TransactGetItem, TransactWriteItem, WriteRequest,
19 },
20};
21
22#[derive(Debug, Clone, Default, Serialize, Deserialize)]
28#[serde(rename_all = "PascalCase")]
29pub struct CreateTableInput {
30 pub table_name: String,
32
33 pub key_schema: Vec<KeySchemaElement>,
35
36 #[serde(default)]
38 pub attribute_definitions: Vec<AttributeDefinition>,
39
40 #[serde(skip_serializing_if = "Option::is_none")]
42 pub billing_mode: Option<BillingMode>,
43
44 #[serde(skip_serializing_if = "Option::is_none")]
46 pub provisioned_throughput: Option<ProvisionedThroughput>,
47
48 #[serde(default, skip_serializing_if = "Vec::is_empty")]
50 pub global_secondary_indexes: Vec<GlobalSecondaryIndex>,
51
52 #[serde(default, skip_serializing_if = "Vec::is_empty")]
54 pub local_secondary_indexes: Vec<LocalSecondaryIndex>,
55
56 #[serde(skip_serializing_if = "Option::is_none")]
58 pub stream_specification: Option<StreamSpecification>,
59
60 #[serde(skip_serializing_if = "Option::is_none")]
62 pub sse_specification: Option<SSESpecification>,
63
64 #[serde(default, skip_serializing_if = "Vec::is_empty")]
66 pub tags: Vec<Tag>,
67}
68
69#[derive(Debug, Clone, Default, Serialize, Deserialize)]
71#[serde(rename_all = "PascalCase")]
72pub struct DeleteTableInput {
73 pub table_name: String,
75}
76
77#[derive(Debug, Clone, Default, Serialize, Deserialize)]
79#[serde(rename_all = "PascalCase")]
80pub struct UpdateTableInput {
81 pub table_name: String,
83
84 #[serde(skip_serializing_if = "Option::is_none")]
86 pub billing_mode: Option<BillingMode>,
87
88 #[serde(skip_serializing_if = "Option::is_none")]
90 pub provisioned_throughput: Option<ProvisionedThroughput>,
91
92 #[serde(default, skip_serializing_if = "Vec::is_empty")]
94 pub attribute_definitions: Vec<AttributeDefinition>,
95}
96
97#[derive(Debug, Clone, Default, Serialize, Deserialize)]
99#[serde(rename_all = "PascalCase")]
100pub struct DescribeTableInput {
101 pub table_name: String,
103}
104
105#[derive(Debug, Clone, Default, Serialize, Deserialize)]
107#[serde(rename_all = "PascalCase")]
108pub struct ListTablesInput {
109 #[serde(skip_serializing_if = "Option::is_none")]
112 pub exclusive_start_table_name: Option<String>,
113
114 #[serde(skip_serializing_if = "Option::is_none")]
116 pub limit: Option<i32>,
117}
118
119#[derive(Debug, Clone, Default, Serialize, Deserialize)]
125#[serde(rename_all = "PascalCase")]
126pub struct PutItemInput {
127 pub table_name: String,
129
130 pub item: HashMap<String, AttributeValue>,
132
133 #[serde(skip_serializing_if = "Option::is_none")]
135 pub condition_expression: Option<String>,
136
137 #[serde(default, skip_serializing_if = "HashMap::is_empty")]
139 pub expression_attribute_names: HashMap<String, String>,
140
141 #[serde(default, skip_serializing_if = "HashMap::is_empty")]
143 pub expression_attribute_values: HashMap<String, AttributeValue>,
144
145 #[serde(skip_serializing_if = "Option::is_none")]
147 pub return_values: Option<ReturnValue>,
148
149 #[serde(skip_serializing_if = "Option::is_none")]
151 pub return_consumed_capacity: Option<ReturnConsumedCapacity>,
152
153 #[serde(skip_serializing_if = "Option::is_none")]
155 pub return_item_collection_metrics: Option<ReturnItemCollectionMetrics>,
156
157 #[serde(default, skip_serializing_if = "HashMap::is_empty")]
159 pub expected: HashMap<String, ExpectedAttributeValue>,
160
161 #[serde(skip_serializing_if = "Option::is_none")]
163 pub conditional_operator: Option<ConditionalOperator>,
164
165 #[serde(skip_serializing_if = "Option::is_none")]
168 pub return_values_on_condition_check_failure: Option<String>,
169}
170
171#[derive(Debug, Clone, Default, Serialize, Deserialize)]
173#[serde(rename_all = "PascalCase")]
174pub struct GetItemInput {
175 pub table_name: String,
177
178 pub key: HashMap<String, AttributeValue>,
181
182 #[serde(skip_serializing_if = "Option::is_none")]
185 pub consistent_read: Option<bool>,
186
187 #[serde(skip_serializing_if = "Option::is_none")]
189 pub projection_expression: Option<String>,
190
191 #[serde(default, skip_serializing_if = "HashMap::is_empty")]
193 pub expression_attribute_names: HashMap<String, String>,
194
195 #[serde(skip_serializing_if = "Option::is_none")]
197 pub return_consumed_capacity: Option<ReturnConsumedCapacity>,
198
199 #[serde(default, skip_serializing_if = "Option::is_none")]
201 pub attributes_to_get: Option<Vec<String>>,
202}
203
204#[derive(Debug, Clone, Default, Serialize, Deserialize)]
206#[serde(rename_all = "PascalCase")]
207pub struct UpdateItemInput {
208 pub table_name: String,
210
211 pub key: HashMap<String, AttributeValue>,
213
214 #[serde(skip_serializing_if = "Option::is_none")]
216 pub update_expression: Option<String>,
217
218 #[serde(skip_serializing_if = "Option::is_none")]
220 pub condition_expression: Option<String>,
221
222 #[serde(default, skip_serializing_if = "HashMap::is_empty")]
224 pub expression_attribute_names: HashMap<String, String>,
225
226 #[serde(default, skip_serializing_if = "HashMap::is_empty")]
228 pub expression_attribute_values: HashMap<String, AttributeValue>,
229
230 #[serde(skip_serializing_if = "Option::is_none")]
232 pub return_values: Option<ReturnValue>,
233
234 #[serde(skip_serializing_if = "Option::is_none")]
236 pub return_consumed_capacity: Option<ReturnConsumedCapacity>,
237
238 #[serde(skip_serializing_if = "Option::is_none")]
240 pub return_item_collection_metrics: Option<ReturnItemCollectionMetrics>,
241
242 #[serde(default, skip_serializing_if = "HashMap::is_empty")]
244 pub attribute_updates: HashMap<String, AttributeValueUpdate>,
245
246 #[serde(default, skip_serializing_if = "HashMap::is_empty")]
248 pub expected: HashMap<String, ExpectedAttributeValue>,
249
250 #[serde(skip_serializing_if = "Option::is_none")]
252 pub conditional_operator: Option<ConditionalOperator>,
253
254 #[serde(skip_serializing_if = "Option::is_none")]
257 pub return_values_on_condition_check_failure: Option<String>,
258}
259
260#[derive(Debug, Clone, Default, Serialize, Deserialize)]
262#[serde(rename_all = "PascalCase")]
263pub struct DeleteItemInput {
264 pub table_name: String,
266
267 pub key: HashMap<String, AttributeValue>,
270
271 #[serde(skip_serializing_if = "Option::is_none")]
273 pub condition_expression: Option<String>,
274
275 #[serde(default, skip_serializing_if = "HashMap::is_empty")]
277 pub expression_attribute_names: HashMap<String, String>,
278
279 #[serde(default, skip_serializing_if = "HashMap::is_empty")]
281 pub expression_attribute_values: HashMap<String, AttributeValue>,
282
283 #[serde(skip_serializing_if = "Option::is_none")]
285 pub return_values: Option<ReturnValue>,
286
287 #[serde(skip_serializing_if = "Option::is_none")]
289 pub return_consumed_capacity: Option<ReturnConsumedCapacity>,
290
291 #[serde(skip_serializing_if = "Option::is_none")]
293 pub return_item_collection_metrics: Option<ReturnItemCollectionMetrics>,
294
295 #[serde(default, skip_serializing_if = "HashMap::is_empty")]
297 pub expected: HashMap<String, ExpectedAttributeValue>,
298
299 #[serde(skip_serializing_if = "Option::is_none")]
301 pub conditional_operator: Option<ConditionalOperator>,
302
303 #[serde(skip_serializing_if = "Option::is_none")]
306 pub return_values_on_condition_check_failure: Option<String>,
307}
308
309#[derive(Debug, Clone, Default, Serialize, Deserialize)]
315#[serde(rename_all = "PascalCase")]
316pub struct QueryInput {
317 pub table_name: String,
319
320 #[serde(skip_serializing_if = "Option::is_none")]
322 pub index_name: Option<String>,
323
324 #[serde(skip_serializing_if = "Option::is_none")]
326 pub key_condition_expression: Option<String>,
327
328 #[serde(skip_serializing_if = "Option::is_none")]
330 pub filter_expression: Option<String>,
331
332 #[serde(skip_serializing_if = "Option::is_none")]
334 pub projection_expression: Option<String>,
335
336 #[serde(default, skip_serializing_if = "HashMap::is_empty")]
338 pub expression_attribute_names: HashMap<String, String>,
339
340 #[serde(default, skip_serializing_if = "HashMap::is_empty")]
342 pub expression_attribute_values: HashMap<String, AttributeValue>,
343
344 #[serde(skip_serializing_if = "Option::is_none")]
347 pub scan_index_forward: Option<bool>,
348
349 #[serde(skip_serializing_if = "Option::is_none")]
352 pub limit: Option<i32>,
353
354 #[serde(default, skip_serializing_if = "HashMap::is_empty")]
357 pub exclusive_start_key: HashMap<String, AttributeValue>,
358
359 #[serde(skip_serializing_if = "Option::is_none")]
361 pub select: Option<Select>,
362
363 #[serde(skip_serializing_if = "Option::is_none")]
365 pub consistent_read: Option<bool>,
366
367 #[serde(skip_serializing_if = "Option::is_none")]
369 pub return_consumed_capacity: Option<ReturnConsumedCapacity>,
370
371 #[serde(default, skip_serializing_if = "HashMap::is_empty")]
373 pub key_conditions: HashMap<String, Condition>,
374
375 #[serde(default, skip_serializing_if = "HashMap::is_empty")]
377 pub query_filter: HashMap<String, Condition>,
378
379 #[serde(default, skip_serializing_if = "Option::is_none")]
381 pub attributes_to_get: Option<Vec<String>>,
382
383 #[serde(skip_serializing_if = "Option::is_none")]
385 pub conditional_operator: Option<ConditionalOperator>,
386}
387
388#[derive(Debug, Clone, Default, Serialize, Deserialize)]
390#[serde(rename_all = "PascalCase")]
391pub struct ScanInput {
392 pub table_name: String,
394
395 #[serde(skip_serializing_if = "Option::is_none")]
397 pub index_name: Option<String>,
398
399 #[serde(skip_serializing_if = "Option::is_none")]
401 pub filter_expression: Option<String>,
402
403 #[serde(skip_serializing_if = "Option::is_none")]
405 pub projection_expression: Option<String>,
406
407 #[serde(default, skip_serializing_if = "HashMap::is_empty")]
409 pub expression_attribute_names: HashMap<String, String>,
410
411 #[serde(default, skip_serializing_if = "HashMap::is_empty")]
413 pub expression_attribute_values: HashMap<String, AttributeValue>,
414
415 #[serde(skip_serializing_if = "Option::is_none")]
417 pub limit: Option<i32>,
418
419 #[serde(default, skip_serializing_if = "HashMap::is_empty")]
422 pub exclusive_start_key: HashMap<String, AttributeValue>,
423
424 #[serde(skip_serializing_if = "Option::is_none")]
427 pub segment: Option<i32>,
428
429 #[serde(skip_serializing_if = "Option::is_none")]
432 pub total_segments: Option<i32>,
433
434 #[serde(skip_serializing_if = "Option::is_none")]
436 pub select: Option<Select>,
437
438 #[serde(skip_serializing_if = "Option::is_none")]
440 pub consistent_read: Option<bool>,
441
442 #[serde(skip_serializing_if = "Option::is_none")]
444 pub return_consumed_capacity: Option<ReturnConsumedCapacity>,
445
446 #[serde(default, skip_serializing_if = "HashMap::is_empty")]
448 pub scan_filter: HashMap<String, Condition>,
449
450 #[serde(default, skip_serializing_if = "Option::is_none")]
452 pub attributes_to_get: Option<Vec<String>>,
453
454 #[serde(skip_serializing_if = "Option::is_none")]
456 pub conditional_operator: Option<ConditionalOperator>,
457}
458
459#[derive(Debug, Clone, Default, Serialize, Deserialize)]
465#[serde(rename_all = "PascalCase")]
466pub struct BatchGetItemInput {
467 pub request_items: HashMap<String, KeysAndAttributes>,
470
471 #[serde(skip_serializing_if = "Option::is_none")]
473 pub return_consumed_capacity: Option<ReturnConsumedCapacity>,
474}
475
476#[derive(Debug, Clone, Default, Serialize, Deserialize)]
478#[serde(rename_all = "PascalCase")]
479pub struct BatchWriteItemInput {
480 pub request_items: HashMap<String, Vec<WriteRequest>>,
483
484 #[serde(skip_serializing_if = "Option::is_none")]
486 pub return_consumed_capacity: Option<ReturnConsumedCapacity>,
487
488 #[serde(skip_serializing_if = "Option::is_none")]
490 pub return_item_collection_metrics: Option<ReturnItemCollectionMetrics>,
491}
492
493#[derive(Debug, Clone, Default, Serialize, Deserialize)]
499#[serde(rename_all = "PascalCase")]
500pub struct TagResourceInput {
501 pub resource_arn: String,
503 pub tags: Vec<Tag>,
505}
506
507#[derive(Debug, Clone, Default, Serialize, Deserialize)]
509#[serde(rename_all = "PascalCase")]
510pub struct UntagResourceInput {
511 pub resource_arn: String,
513 pub tag_keys: Vec<String>,
515}
516
517#[derive(Debug, Clone, Default, Serialize, Deserialize)]
519#[serde(rename_all = "PascalCase")]
520pub struct ListTagsOfResourceInput {
521 pub resource_arn: String,
523 #[serde(skip_serializing_if = "Option::is_none")]
525 pub next_token: Option<String>,
526}
527
528#[derive(Debug, Clone, Serialize, Deserialize)]
534#[serde(rename_all = "PascalCase")]
535pub struct UpdateTimeToLiveInput {
536 pub table_name: String,
538 pub time_to_live_specification: TimeToLiveSpecification,
540}
541
542#[derive(Debug, Clone, Default, Serialize, Deserialize)]
544#[serde(rename_all = "PascalCase")]
545pub struct DescribeTimeToLiveInput {
546 pub table_name: String,
548}
549
550#[derive(Debug, Clone, Default, Serialize, Deserialize)]
556#[serde(rename_all = "PascalCase")]
557pub struct TransactWriteItemsInput {
558 pub transact_items: Vec<TransactWriteItem>,
560 #[serde(skip_serializing_if = "Option::is_none")]
562 pub return_consumed_capacity: Option<ReturnConsumedCapacity>,
563 #[serde(skip_serializing_if = "Option::is_none")]
565 pub return_item_collection_metrics: Option<ReturnItemCollectionMetrics>,
566 #[serde(skip_serializing_if = "Option::is_none")]
568 pub client_request_token: Option<String>,
569}
570
571#[derive(Debug, Clone, Default, Serialize, Deserialize)]
573#[serde(rename_all = "PascalCase")]
574pub struct TransactGetItemsInput {
575 pub transact_items: Vec<TransactGetItem>,
577 #[serde(skip_serializing_if = "Option::is_none")]
579 pub return_consumed_capacity: Option<ReturnConsumedCapacity>,
580}
581
582#[derive(Debug, Clone, Default, Serialize, Deserialize)]
588#[serde(rename_all = "PascalCase")]
589pub struct DescribeLimitsInput {}
590
591#[derive(Debug, Clone, Default, Serialize, Deserialize)]
593#[serde(rename_all = "PascalCase")]
594pub struct DescribeEndpointsInput {}