99 99 | }
|
100 100 | static KEYSANDATTRIBUTES_SCHEMA_ID: ::aws_smithy_schema::ShapeId =
|
101 101 | ::aws_smithy_schema::ShapeId::from_static("com.amazonaws.dynamodb#KeysAndAttributes", "com.amazonaws.dynamodb", "KeysAndAttributes");
|
102 102 | static KEYSANDATTRIBUTES_MEMBER_KEYS: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
|
103 103 | ::aws_smithy_schema::ShapeId::from_static(
|
104 104 | "com.amazonaws.dynamodb#KeysAndAttributes$Keys",
|
105 105 | "com.amazonaws.dynamodb",
|
106 106 | "KeysAndAttributes",
|
107 107 | ),
|
108 108 | ::aws_smithy_schema::ShapeType::List,
|
109 - | "keys",
|
109 + | "Keys",
|
110 110 | 0,
|
111 111 | );
|
112 112 | static KEYSANDATTRIBUTES_MEMBER_ATTRIBUTES_TO_GET: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
|
113 113 | ::aws_smithy_schema::ShapeId::from_static(
|
114 114 | "com.amazonaws.dynamodb#KeysAndAttributes$AttributesToGet",
|
115 115 | "com.amazonaws.dynamodb",
|
116 116 | "KeysAndAttributes",
|
117 117 | ),
|
118 118 | ::aws_smithy_schema::ShapeType::List,
|
119 - | "attributes_to_get",
|
119 + | "AttributesToGet",
|
120 120 | 1,
|
121 121 | );
|
122 122 | static KEYSANDATTRIBUTES_MEMBER_CONSISTENT_READ: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
|
123 123 | ::aws_smithy_schema::ShapeId::from_static(
|
124 124 | "com.amazonaws.dynamodb#KeysAndAttributes$ConsistentRead",
|
125 125 | "com.amazonaws.dynamodb",
|
126 126 | "KeysAndAttributes",
|
127 127 | ),
|
128 128 | ::aws_smithy_schema::ShapeType::Boolean,
|
129 - | "consistent_read",
|
129 + | "ConsistentRead",
|
130 130 | 2,
|
131 131 | );
|
132 132 | static KEYSANDATTRIBUTES_MEMBER_PROJECTION_EXPRESSION: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
|
133 133 | ::aws_smithy_schema::ShapeId::from_static(
|
134 134 | "com.amazonaws.dynamodb#KeysAndAttributes$ProjectionExpression",
|
135 135 | "com.amazonaws.dynamodb",
|
136 136 | "KeysAndAttributes",
|
137 137 | ),
|
138 138 | ::aws_smithy_schema::ShapeType::String,
|
139 - | "projection_expression",
|
139 + | "ProjectionExpression",
|
140 140 | 3,
|
141 141 | );
|
142 142 | static KEYSANDATTRIBUTES_MEMBER_EXPRESSION_ATTRIBUTE_NAMES: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_member(
|
143 143 | ::aws_smithy_schema::ShapeId::from_static(
|
144 144 | "com.amazonaws.dynamodb#KeysAndAttributes$ExpressionAttributeNames",
|
145 145 | "com.amazonaws.dynamodb",
|
146 146 | "KeysAndAttributes",
|
147 147 | ),
|
148 148 | ::aws_smithy_schema::ShapeType::Map,
|
149 - | "expression_attribute_names",
|
149 + | "ExpressionAttributeNames",
|
150 150 | 4,
|
151 151 | );
|
152 152 | static KEYSANDATTRIBUTES_SCHEMA: ::aws_smithy_schema::Schema = ::aws_smithy_schema::Schema::new_struct(
|
153 153 | KEYSANDATTRIBUTES_SCHEMA_ID,
|
154 154 | ::aws_smithy_schema::ShapeType::Structure,
|
155 155 | &[
|
156 156 | &KEYSANDATTRIBUTES_MEMBER_KEYS,
|
157 157 | &KEYSANDATTRIBUTES_MEMBER_ATTRIBUTES_TO_GET,
|
158 158 | &KEYSANDATTRIBUTES_MEMBER_CONSISTENT_READ,
|
159 159 | &KEYSANDATTRIBUTES_MEMBER_PROJECTION_EXPRESSION,
|
160 160 | &KEYSANDATTRIBUTES_MEMBER_EXPRESSION_ATTRIBUTE_NAMES,
|
161 161 | ],
|
162 162 | );
|
163 163 | impl KeysAndAttributes {
|
164 164 | /// The schema for this shape.
|
165 165 | pub const SCHEMA: &'static ::aws_smithy_schema::Schema = &KEYSANDATTRIBUTES_SCHEMA;
|
166 166 | }
|
167 167 | impl ::aws_smithy_schema::serde::SerializableStruct for KeysAndAttributes {
|
168 168 | #[allow(unused_variables, clippy::diverging_sub_expression)]
|
169 169 | fn serialize_members(
|
170 170 | &self,
|
171 171 | ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer,
|
172 172 | ) -> ::std::result::Result<(), ::aws_smithy_schema::serde::SerdeError> {
|
173 173 | {
|
174 174 | let val = &self.keys;
|
175 175 |
|
176 176 | ser.write_list(
|
177 177 | &KEYSANDATTRIBUTES_MEMBER_KEYS,
|
178 178 | &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
|
179 179 | for item in val {
|
180 - | todo!("schema: unsupported list element type");
|
180 + | ser.write_map(
|
181 + | &::aws_smithy_schema::prelude::DOCUMENT,
|
182 + | &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
|
183 + | for (key, value) in item {
|
184 + | ser.write_string(&::aws_smithy_schema::prelude::STRING, key)?;
|
185 + | ser.write_struct(crate::types::AttributeValue::SCHEMA, value)?;
|
186 + | }
|
187 + | Ok(())
|
188 + | },
|
189 + | )?;
|
181 190 | }
|
182 191 | Ok(())
|
183 192 | },
|
184 193 | )?;
|
185 194 | }
|
186 195 | if let Some(ref val) = self.attributes_to_get {
|
187 196 | ser.write_list(
|
188 197 | &KEYSANDATTRIBUTES_MEMBER_ATTRIBUTES_TO_GET,
|
189 198 | &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
|
190 199 | for item in val {
|
191 200 | ser.write_string(&aws_smithy_schema::prelude::STRING, item)?;
|
192 201 | }
|
193 202 | Ok(())
|
194 203 | },
|
195 204 | )?;
|
196 205 | }
|
197 206 | if let Some(ref val) = self.consistent_read {
|
198 207 | ser.write_boolean(&KEYSANDATTRIBUTES_MEMBER_CONSISTENT_READ, *val)?;
|
199 208 | }
|
200 209 | if let Some(ref val) = self.projection_expression {
|
201 210 | ser.write_string(&KEYSANDATTRIBUTES_MEMBER_PROJECTION_EXPRESSION, val)?;
|
202 211 | }
|
203 212 | if let Some(ref val) = self.expression_attribute_names {
|
204 213 | ser.write_map(
|
205 214 | &KEYSANDATTRIBUTES_MEMBER_EXPRESSION_ATTRIBUTE_NAMES,
|
206 215 | &|ser: &mut dyn ::aws_smithy_schema::serde::ShapeSerializer| {
|
207 216 | for (key, value) in val {
|
208 217 | ser.write_string(&::aws_smithy_schema::prelude::STRING, key)?;
|
209 218 | ser.write_string(&::aws_smithy_schema::prelude::STRING, value)?;
|
210 219 | }
|
211 220 | Ok(())
|
212 221 | },
|
213 222 | )?;
|
214 223 | }
|
215 224 | Ok(())
|
216 225 | }
|
217 226 | }
|
218 227 | impl KeysAndAttributes {
|
219 228 | /// Deserializes this structure from a [`ShapeDeserializer`].
|
220 - | pub fn deserialize<D: ::aws_smithy_schema::serde::ShapeDeserializer>(
|
221 - | deserializer: &mut D,
|
229 + | pub fn deserialize(
|
230 + | deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
|
222 231 | ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
|
223 232 | #[allow(unused_variables, unused_mut)]
|
224 233 | let mut builder = Self::builder();
|
225 234 | #[allow(
|
226 235 | unused_variables,
|
227 236 | unreachable_code,
|
228 237 | clippy::single_match,
|
229 238 | clippy::match_single_binding,
|
230 239 | clippy::diverging_sub_expression
|
231 240 | )]
|
232 - | deserializer.read_struct(&KEYSANDATTRIBUTES_SCHEMA, (), |_, member, deser| {
|
241 + | deserializer.read_struct(&KEYSANDATTRIBUTES_SCHEMA, &mut |member, deser| {
|
233 242 | match member.member_index() {
|
234 243 | Some(0) => {
|
235 244 | builder.keys = Some({
|
236 - | let container = if let Some(cap) = deser.container_size() {
|
237 - | Vec::with_capacity(cap)
|
238 - | } else {
|
239 - | Vec::new()
|
240 - | };
|
241 - | deser.read_list(member, container, |mut list, deser| {
|
242 - | list.push(todo!("deserialize nested aggregate"));
|
243 - | Ok(list)
|
244 - | })?
|
245 + | let mut container = Vec::new();
|
246 + | deser.read_list(member, &mut |deser| {
|
247 + | container.push({
|
248 + | let mut map = ::std::collections::HashMap::new();
|
249 + | deser.read_map(member, &mut |key, deser| {
|
250 + | let value = crate::types::AttributeValue::deserialize(deser)?;
|
251 + | map.insert(key, value);
|
252 + | Ok(())
|
253 + | })?;
|
254 + | map
|
255 + | });
|
256 + | Ok(())
|
257 + | })?;
|
258 + | container
|
245 259 | });
|
246 260 | }
|
247 261 | Some(1) => {
|
248 - | builder.attributes_to_get = Some({
|
249 - | let container = if let Some(cap) = deser.container_size() {
|
250 - | Vec::with_capacity(cap)
|
251 - | } else {
|
252 - | Vec::new()
|
253 - | };
|
254 - | deser.read_list(member, container, |mut list, deser| {
|
255 - | list.push(deser.read_string(member)?);
|
256 - | Ok(list)
|
257 - | })?
|
258 - | });
|
262 + | builder.attributes_to_get = Some(deser.read_string_list(member)?);
|
259 263 | }
|
260 264 | Some(2) => {
|
261 265 | builder.consistent_read = Some(deser.read_boolean(member)?);
|
262 266 | }
|
263 267 | Some(3) => {
|
264 268 | builder.projection_expression = Some(deser.read_string(member)?);
|
265 269 | }
|
266 270 | Some(4) => {
|
267 - | builder.expression_attribute_names = Some({
|
268 - | let container = if let Some(cap) = deser.container_size() {
|
269 - | std::collections::HashMap::with_capacity(cap)
|
270 - | } else {
|
271 - | std::collections::HashMap::new()
|
272 - | };
|
273 - | deser.read_map(member, container, |mut map, key, deser| {
|
274 - | map.insert(key, deser.read_string(member)?);
|
275 - | Ok(map)
|
276 - | })?
|
277 - | });
|
271 + | builder.expression_attribute_names = Some(deser.read_string_string_map(member)?);
|
278 272 | }
|
279 273 | _ => {}
|
280 274 | }
|
281 275 | Ok(())
|
282 276 | })?;
|
277 + | builder.keys = builder.keys.or(Some(Vec::new()));
|
283 278 | builder
|
284 279 | .build()
|
285 280 | .map_err(|e| aws_smithy_schema::serde::SerdeError::Custom { message: e.to_string() })
|
286 281 | }
|
287 282 | }
|
283 + | impl KeysAndAttributes {
|
284 + | /// Deserializes this structure from a body deserializer and HTTP response.
|
285 + | pub fn deserialize_with_response(
|
286 + | deserializer: &mut dyn ::aws_smithy_schema::serde::ShapeDeserializer,
|
287 + | _headers: &::aws_smithy_runtime_api::http::Headers,
|
288 + | _status: u16,
|
289 + | _body: &[u8],
|
290 + | ) -> ::std::result::Result<Self, ::aws_smithy_schema::serde::SerdeError> {
|
291 + | Self::deserialize(deserializer)
|
292 + | }
|
293 + | }
|
288 294 | impl KeysAndAttributes {
|
289 295 | /// Creates a new builder-style object to manufacture [`KeysAndAttributes`](crate::types::KeysAndAttributes).
|
290 296 | pub fn builder() -> crate::types::builders::KeysAndAttributesBuilder {
|
291 297 | crate::types::builders::KeysAndAttributesBuilder::default()
|
292 298 | }
|
293 299 | }
|
294 300 |
|
295 301 | /// A builder for [`KeysAndAttributes`](crate::types::KeysAndAttributes).
|
296 302 | #[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
|
297 303 | #[non_exhaustive]
|