Merge pull request #911 from im-auld/query-filters-issue-164
Query filters issue 164
This commit is contained in:
commit
95f759ce30
@ -329,6 +329,7 @@ class DynamoHandler(BaseResponse):
|
|||||||
else:
|
else:
|
||||||
# 'KeyConditions': {u'forum_name': {u'ComparisonOperator': u'EQ', u'AttributeValueList': [{u'S': u'the-key'}]}}
|
# 'KeyConditions': {u'forum_name': {u'ComparisonOperator': u'EQ', u'AttributeValueList': [{u'S': u'the-key'}]}}
|
||||||
key_conditions = self.body.get('KeyConditions')
|
key_conditions = self.body.get('KeyConditions')
|
||||||
|
query_filters = self.body.get("QueryFilter")
|
||||||
if key_conditions:
|
if key_conditions:
|
||||||
hash_key_name, range_key_name = dynamodb_backend2.get_table_keys_name(
|
hash_key_name, range_key_name = dynamodb_backend2.get_table_keys_name(
|
||||||
name, key_conditions.keys())
|
name, key_conditions.keys())
|
||||||
@ -357,6 +358,8 @@ class DynamoHandler(BaseResponse):
|
|||||||
else:
|
else:
|
||||||
range_comparison = None
|
range_comparison = None
|
||||||
range_values = []
|
range_values = []
|
||||||
|
if query_filters:
|
||||||
|
filter_kwargs.update(query_filters)
|
||||||
index_name = self.body.get('IndexName')
|
index_name = self.body.get('IndexName')
|
||||||
exclusive_start_key = self.body.get('ExclusiveStartKey')
|
exclusive_start_key = self.body.get('ExclusiveStartKey')
|
||||||
limit = self.body.get("Limit")
|
limit = self.body.get("Limit")
|
||||||
|
@ -838,6 +838,47 @@ def test_query_filter_gte():
|
|||||||
list(results).should.have.length_of(2)
|
list(results).should.have.length_of(2)
|
||||||
|
|
||||||
|
|
||||||
|
@requires_boto_gte("2.9")
|
||||||
|
@mock_dynamodb2_deprecated
|
||||||
|
def test_query_non_hash_range_key():
|
||||||
|
table = create_table_with_local_indexes()
|
||||||
|
item_data = [
|
||||||
|
{
|
||||||
|
'forum_name': 'Cool Forum',
|
||||||
|
'subject': 'Check this out!',
|
||||||
|
'version': '1',
|
||||||
|
'threads': 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'forum_name': 'Cool Forum',
|
||||||
|
'subject': 'Read this now!',
|
||||||
|
'version': '3',
|
||||||
|
'threads': 5,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'forum_name': 'Cool Forum',
|
||||||
|
'subject': 'Please read this... please',
|
||||||
|
'version': '2',
|
||||||
|
'threads': 0,
|
||||||
|
}
|
||||||
|
]
|
||||||
|
for data in item_data:
|
||||||
|
item = Item(table, data)
|
||||||
|
item.save(overwrite=True)
|
||||||
|
|
||||||
|
results = table.query(
|
||||||
|
forum_name__eq='Cool Forum', version__gt="2"
|
||||||
|
)
|
||||||
|
results = list(results)
|
||||||
|
results.should.have.length_of(1)
|
||||||
|
|
||||||
|
results = table.query(
|
||||||
|
forum_name__eq='Cool Forum', version__lt="3"
|
||||||
|
)
|
||||||
|
results = list(results)
|
||||||
|
results.should.have.length_of(2)
|
||||||
|
|
||||||
|
|
||||||
@mock_dynamodb2_deprecated
|
@mock_dynamodb2_deprecated
|
||||||
def test_reverse_query():
|
def test_reverse_query():
|
||||||
conn = boto.dynamodb2.layer1.DynamoDBConnection()
|
conn = boto.dynamodb2.layer1.DynamoDBConnection()
|
||||||
|
Loading…
Reference in New Issue
Block a user