diff --git a/src/maggma/api/query_operator/sorting.py b/src/maggma/api/query_operator/sorting.py index d308e4aae..f5f4ff23b 100644 --- a/src/maggma/api/query_operator/sorting.py +++ b/src/maggma/api/query_operator/sorting.py @@ -42,12 +42,15 @@ def query( ) for sort_field in field_list: + query_entry = {sort_field: 1} + + if sort_field.startswith("-"): + query_entry = {sort_field[1:]: -1} + sort_field = sort_field[1:] + if self.fields and sort_field not in self.fields: continue - if sort_field[0] == "-": - sort.update({sort_field[1:]: -1}) - else: - sort.update({sort_field: 1}) + sort.update(query_entry) return {"sort": sort} diff --git a/tests/api/test_query_operators.py b/tests/api/test_query_operators.py index 68cd44e70..2803f7d87 100644 --- a/tests/api/test_query_operators.py +++ b/tests/api/test_query_operators.py @@ -95,10 +95,15 @@ def test_numeric_query_serialization(): def test_sort_query_functionality(): op = SortQuery() - assert op.query(_sort_fields="volume,-density") == {"sort": {"volume": 1, "density": -1}} +def test_sort_query_fail(): + op = SortQuery(max_num=1) + with pytest.raises(HTTPException): + op.query(_sort_fields="volume,-density") + + def test_sort_serialization(): op = SortQuery()