1212from smithy_dafny_standard_library .internaldafny .generated import Wrappers
1313from aws_dbesdk_dynamodb .smithygenerated .aws_cryptography_dbencryptionsdk_dynamodb .errors import _smithy_error_to_dafny_error
1414from aws_dbesdk_dynamodb_test_vectors .waiting_boto3_ddb_client import WaitingLocalDynamoClient
15- from aws_dbesdk_dynamodb .transform import (
16- dict_to_ddb ,
17- ddb_to_dict ,
18- )
19- from aws_dbesdk_dynamodb .internal import client_to_resource
20-
21- from boto3 .dynamodb .conditions import Key , Attr , And , Or , Not , Contains
22- from boto3 .dynamodb .types import TypeDeserializer
2315
24- # from .....test.resource_formatted_queries import (queries, complex_queries)
16+ from boto3 . dynamodb . conditions import Key , Attr
2517
2618# When querying, DBESDK DDB TestVectors will pass the Table the query as a string.
2719# The Table could accept this string as-is and process it correctly.
2820# However, EncryptedTables have extra logic to process boto3 Conditions.
29- # I want to test this extra logic as much as possible.
21+ # This extra logic should be tested as much as possible.
3022# This map converts some known query strings to equivalent Conditions.
3123# TestVectors will pass the query string (map key) to the Table;
3224# the Table's internal logic will look up the query string in this map:
3325# - Entry found: Query with replaced Condition
3426# - Not found: Query with original string. Table accepts strings.
3527# This map contains all query strings in the TestVectors' data.json as of commit
3628# 4f18689f79243c9a5ab0f3a23108671defddeac4
37- # If any query strings are added to TestVectors, they COULD be added here,
38- # but do not need to be added .
29+ # If any query strings are added to TestVectors, they COULD be added here;
30+ # if they are not added, the Table will accept the string as-is .
3931known_query_string_to_condition_map = {
4032 # "Basic" queries
4133 "RecNum = :zero" : Key ("RecNum" ).eq (":zero" ),
@@ -130,9 +122,9 @@ def get_item(self, **kwargs):
130122 return client_output
131123
132124 def batch_write_item (self , ** kwargs ):
133- # There isn't a resource shape for this;
125+ # The table doesn't support batch_write_item, but supports batch_writer.
126+ # Translate the batch_write_item request to batch_writer requests.
134127 table_input = self ._client_shape_to_resource_shape_converter .batch_write_item_request (kwargs )
135- # table_output = self._table.batch_write_item(**table_input)
136128 with self ._table .batch_writer () as batch_writer :
137129 for _ , items in table_input ["RequestItems" ].items ():
138130 for item in items :
@@ -142,7 +134,7 @@ def batch_write_item(self, **kwargs):
142134 batch_writer .delete_item (item ["DeleteRequest" ]["Key" ])
143135 else :
144136 raise ValueError (f"Unknown request type: { item } " )
145- # There isn't a shape for the output, but luckily the output can be an empty dict :
137+ # An empty dict is valid output:
146138 # https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/dynamodb/client/batch_write_item.html
147139 client_output = {}
148140 return client_output
@@ -158,8 +150,7 @@ def scan(self, **kwargs):
158150 if "KeyConditionExpression" in table_input :
159151 if table_input ["KeyConditionExpression" ] in known_query_string_to_condition_map :
160152 # Turn the query into the resource-formatted query
161- query = known_query_string_to_condition_map [table_input ["KeyConditionExpression" ]]
162- table_input ["KeyConditionExpression" ] = query
153+ table_input ["KeyConditionExpression" ] = known_query_string_to_condition_map [table_input ["KeyConditionExpression" ]]
163154 if "FilterExpression" in table_input :
164155 if table_input ["FilterExpression" ] in known_query_string_to_condition_map :
165156 # Turn the query into the resource-formatted query
@@ -182,8 +173,7 @@ def query(self, **kwargs):
182173 if "KeyConditionExpression" in table_input :
183174 if table_input ["KeyConditionExpression" ] in known_query_string_to_condition_map :
184175 # Turn the query into the resource-formatted query
185- query = known_query_string_to_condition_map [table_input ["KeyConditionExpression" ]]
186- table_input ["KeyConditionExpression" ] = query
176+ table_input ["KeyConditionExpression" ] = known_query_string_to_condition_map [table_input ["KeyConditionExpression" ]]
187177 if "FilterExpression" in table_input :
188178 if table_input ["FilterExpression" ] in known_query_string_to_condition_map :
189179 # Turn the query into the resource-formatted query
0 commit comments