diff --git a/crates/core/src/types/mod.rs b/crates/core/src/types/mod.rs index e21f75110..297d701e1 100755 --- a/crates/core/src/types/mod.rs +++ b/crates/core/src/types/mod.rs @@ -42,7 +42,9 @@ pub use key_schema::{ ScalarAttributeType, TableKeyInfo, VectorIndexKeyInfo, hash_key_elements, is_multipart_key_schema, partition_indexes, range_key_elements, }; -pub use query::{Condition, QueryInput, QueryOutput, ScanInput, ScanOutput, Select}; +pub use query::{ + Condition, QueryInput, QueryOutput, ScanInput, ScanOutput, Select, saturated_int32, +}; pub use stream::{ DescribeStreamInput, DescribeStreamOutput, GetRecordsInput, GetRecordsOutput, GetShardIteratorInput, GetShardIteratorOutput, ListStreamsInput, ListStreamsOutput, diff --git a/crates/core/src/types/query.rs b/crates/core/src/types/query.rs index d9aeaf345..70cb53186 100755 --- a/crates/core/src/types/query.rs +++ b/crates/core/src/types/query.rs @@ -142,15 +142,30 @@ pub struct ScanInput { deserialize_with = "crate::serde_helpers::deserialize_expression_values" )] pub expression_attribute_values: Option>, - #[serde(rename = "Limit")] + /// Any JSON number; see [`saturated_int32`]. + #[serde( + rename = "Limit", + default, + deserialize_with = "deserialize_int32_field" + )] pub limit: Option, #[serde(rename = "ExclusiveStartKey")] pub exclusive_start_key: Option, #[serde(rename = "Select")] pub select: Option