Skip to content

Commit a9fabd7

Browse files
author
Lucas McDonald
committed
wip
1 parent ace02a2 commit a9fabd7

File tree

7 files changed

+427
-371
lines changed

7 files changed

+427
-371
lines changed

DynamoDbEncryption/runtimes/python/src/aws_database_encryption_sdk/encrypted/client.py

Lines changed: 127 additions & 158 deletions
Large diffs are not rendered by default.

DynamoDbEncryption/runtimes/python/src/aws_database_encryption_sdk/encrypted/paginator.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,6 @@ def paginate_query(self, **paginate_query_kwargs):
107107
except KeyError:
108108
pass
109109

110-
# client_query_input = self._maybe_transform_request_to_dynamodb_item(item_key = "Key", **client_query_kwargs)
111110
transformed_request = self._transformer.query_input_transform(
112111
QueryInputTransformInput(
113112
sdk_input = client_query_kwargs
@@ -118,11 +117,6 @@ def paginate_query(self, **paginate_query_kwargs):
118117
transformed_request["PaginationConfig"] = pagination_config
119118
sdk_page_response = self._paginator.paginate(**transformed_request)
120119

121-
print(f"{sdk_page_response=}")
122-
print(f"{sdk_page_response.__dict__=}")
123-
124-
125-
126120
for page in sdk_page_response:
127121
# boto3 docs are wrong. NextToken is never returned.
128122

DynamoDbEncryption/runtimes/python/src/aws_database_encryption_sdk/encrypted/table.py

Lines changed: 232 additions & 196 deletions
Large diffs are not rendered by default.

DynamoDbEncryption/runtimes/python/src/aws_database_encryption_sdk/encrypted/utils.py

Whitespace-only changes.

DynamoDbEncryption/runtimes/python/src/aws_database_encryption_sdk/internal/boto3_conversions.py

Lines changed: 55 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -214,12 +214,9 @@ def keys(self, keys):
214214

215215
def batch_write_item_request(self, batch_write_item_request):
216216
if "RequestItems" in batch_write_item_request:
217-
batch_write_item_request["RequestItems"] = self.batch_write_item_request_items(batch_write_item_request["RequestItems"])
217+
batch_write_item_request["RequestItems"] = self.batch_write_item_items(batch_write_item_request["RequestItems"])
218218
return batch_write_item_request
219219

220-
def batch_write_item_request_items(self, request_items):
221-
return self.batch_write_item_items(request_items)
222-
223220
def batch_write_item_items(self, items):
224221
items_out = {}
225222
for table_name, table_value in items.items():
@@ -252,4 +249,57 @@ def batch_write_item_item_collection_metrics(self, item_collection_metrics):
252249
item_collection_metrics_out[table_name] = table_value
253250
return item_collection_metrics_out
254251

255-
def
252+
def transact_write_items_request(self, transact_write_items_request):
253+
if "TransactItems" in transact_write_items_request:
254+
transact_write_items_request["TransactItems"] = self.transact_write_items(transact_write_items_request["TransactItems"])
255+
return transact_write_items_request
256+
257+
def transact_write_items(self, transact_items):
258+
output_transact_items = []
259+
for transact_item in transact_items:
260+
if "Put" in transact_item:
261+
transact_item["Put"]["Item"] = self.item(transact_item["Put"]["Item"])
262+
output_transact_items.append(transact_item)
263+
elif "Delete" in transact_item:
264+
transact_item["Delete"]["Key"] = self.item(transact_item["Delete"]["Key"])
265+
output_transact_items.append(transact_item)
266+
elif "ConditionCheck" in transact_item:
267+
transact_item["ConditionCheck"]["Key"] = self.item(transact_item["ConditionCheck"]["Key"])
268+
output_transact_items.append(transact_item)
269+
elif "Update" in transact_item:
270+
# Update requests are not supported yet.
271+
raise NotImplementedError('"update_item" is not yet implemented')
272+
else:
273+
raise ValueError(f"Unknown transact_write_items method key: {transact_item}")
274+
return output_transact_items
275+
276+
def transact_write_items_response(self, transact_write_items_response):
277+
return transact_write_items_response
278+
279+
def transact_get_items_request(self, transact_get_items_request):
280+
if "TransactItems" in transact_get_items_request:
281+
transact_get_items_request["TransactItems"] = self.transact_get_items(transact_get_items_request["TransactItems"])
282+
return transact_get_items_request
283+
284+
def transact_get_items(self, transact_items):
285+
output_transact_items = []
286+
for transact_item in transact_items:
287+
if "Get" in transact_item:
288+
transact_item["Get"]["Key"] = self.item(transact_item["Get"]["Key"])
289+
output_transact_items.append(transact_item)
290+
else:
291+
raise ValueError(f"Unknown transact_get_items method key: {transact_item}")
292+
return output_transact_items
293+
294+
def transact_get_items_response(self, transact_get_items_response):
295+
if "Responses" in transact_get_items_response:
296+
transact_get_items_response["Responses"] = self.transact_get_items_responses(transact_get_items_response["Responses"])
297+
return transact_get_items_response
298+
299+
def transact_get_items_responses(self, responses):
300+
responses_out = []
301+
for response in responses:
302+
if "Item" in response:
303+
response["Item"] = self.item(response["Item"])
304+
responses_out.append(response)
305+
return responses_out

DynamoDbEncryption/runtimes/python/src/aws_database_encryption_sdk/internal/client_to_resource.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33

44
class ClientShapeToResourceShapeConverter(BotoInterfaceShapeConverter):
55

6+
def __init__(self, delete_table_name = True):
7+
self.delete_table_name = delete_table_name
8+
69
def item(self, item):
710
return ddb_to_dict(item)
811

@@ -12,22 +15,26 @@ def attribute_value(self, attribute_value):
1215

1316
def put_item_request(self, put_item_request):
1417
out = super().put_item_request(put_item_request)
15-
del out["TableName"]
18+
if self.delete_table_name:
19+
del out["TableName"]
1620
return out
1721

1822
def get_item_request(self, get_item_request):
1923
out = super().get_item_request(get_item_request)
20-
del out["TableName"]
24+
if self.delete_table_name:
25+
del out["TableName"]
2126
return out
2227

2328
def query_request(self, query_request):
2429
out = super().query_request(query_request)
25-
del out["TableName"]
30+
if self.delete_table_name:
31+
del out["TableName"]
2632
return out
2733

2834
def scan_request(self, scan_request):
2935
out = super().scan_request(scan_request)
30-
del out["TableName"]
36+
if self.delete_table_name:
37+
del out["TableName"]
3138
return out
3239

3340
def expression(self, condition_expression, expression_attribute_names, expression_attribute_values):

DynamoDbEncryption/runtimes/python/src/aws_database_encryption_sdk/internal/resource_to_client.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ def expression(self, condition_expression, expression_attribute_names, expressio
8585

8686
def batch_write_item_request_items(self, tables):
8787
"""Transform a batch write request's items to DynamoDB format."""
88-
output_tables = []
88+
output_tables = {}
8989
table_names = list(tables.keys())
9090
for table_name in table_names:
9191
requests = tables[table_name]
@@ -105,7 +105,7 @@ def batch_write_item_request_items(self, tables):
105105
else:
106106
raise ValueError(f"Unknown batch_write_items method key: {request_name}")
107107
output_requests.append({request_name: boto3_request})
108-
output_tables.append({table_name: output_requests})
108+
output_tables[table_name] = output_requests
109109
return output_tables
110110

111111
def batch_get_request(self, **kwargs):

0 commit comments

Comments
 (0)