From 524bd979dee2dfb8176ff99740a637e3a8b6581c Mon Sep 17 00:00:00 2001 From: munrojm Date: Tue, 11 Jun 2024 14:55:36 -0700 Subject: [PATCH 1/3] Fix desc sorting in query op --- src/maggma/api/query_operator/sorting.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/maggma/api/query_operator/sorting.py b/src/maggma/api/query_operator/sorting.py index d308e4aae..a5042fcd7 100644 --- a/src/maggma/api/query_operator/sorting.py +++ b/src/maggma/api/query_operator/sorting.py @@ -42,12 +42,11 @@ def query( ) for sort_field in field_list: + query_entry = {sort_field[1:]: -1} if sort_field.startswith("-") else {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} From 20842272662c985bc5cc09b8e4fc536b86212fbd Mon Sep 17 00:00:00 2001 From: munrojm Date: Tue, 11 Jun 2024 14:57:56 -0700 Subject: [PATCH 2/3] More sorting fixes --- src/maggma/api/query_operator/sorting.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/maggma/api/query_operator/sorting.py b/src/maggma/api/query_operator/sorting.py index a5042fcd7..f5f4ff23b 100644 --- a/src/maggma/api/query_operator/sorting.py +++ b/src/maggma/api/query_operator/sorting.py @@ -42,7 +42,11 @@ def query( ) for sort_field in field_list: - query_entry = {sort_field[1:]: -1} if sort_field.startswith("-") else {sort_field: 1} + 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 From 4f058feea10e82144d7146b2364ec3648e27edba Mon Sep 17 00:00:00 2001 From: munrojm Date: Tue, 11 Jun 2024 15:15:43 -0700 Subject: [PATCH 3/3] Add sort query op test --- tests/api/test_query_operators.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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()