Skip to content

Commit 2c637ee

Browse files
committed
handle first and last properly
1 parent 47ad026 commit 2c637ee

1 file changed

Lines changed: 18 additions & 8 deletions

File tree

ayon_api/graphql.py

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,7 @@ def calculate_query(self) -> str:
304304
str: GraphQl string with variables and headers.
305305
306306
Raises:
307-
ValueError: Query has no fiels.
307+
ValueError: Query has no fields.
308308
309309
"""
310310
if not self._children:
@@ -396,6 +396,7 @@ def continuous_query(
396396
while self.need_query:
397397
query_str = self.calculate_query()
398398
variables = self.get_variables_values()
399+
399400
response = con.query_graphql(query_str, variables)
400401
if response.errors:
401402
raise GraphQlQueryFailed(
@@ -902,8 +903,12 @@ def parse_result(
902903
progress_data[cursor_key] = nodes_by_cursor
903904

904905
page_info = value["pageInfo"]
905-
new_cursor = page_info["endCursor"]
906-
self._need_query = page_info["hasNextPage"]
906+
if self._order == SortOrder.ascending:
907+
new_cursor = page_info["endCursor"]
908+
self._need_query = page_info["hasNextPage"]
909+
else:
910+
new_cursor = page_info["startCursor"]
911+
self._need_query = page_info["hasPreviousPage"]
907912
edges = value["edges"]
908913
# Fake result parse
909914
if not edges:
@@ -949,9 +954,7 @@ def _get_cursor_key(self) -> str:
949954

950955
def get_filters(self) -> dict[str, Any]:
951956
filters = super().get_filters()
952-
limit_key = "first"
953-
if self._order == SortOrder.descending:
954-
limit_key = "last"
957+
limit_key = "first" if self._order == SortOrder.ascending else "last"
955958

956959
limit_amount = 300
957960
if self._limit:
@@ -962,7 +965,10 @@ def get_filters(self) -> dict[str, Any]:
962965
filters[limit_key] = limit_amount
963966

964967
if self._cursor:
965-
filters["after"] = self._cursor
968+
cursor_key = (
969+
"after" if self._order == SortOrder.ascending else "before"
970+
)
971+
filters[cursor_key] = self._cursor
966972
return filters
967973

968974
def calculate_query(self) -> str:
@@ -1001,7 +1007,11 @@ def calculate_query(self) -> str:
10011007
output.append(edges_offset + "pageInfo {")
10021008
for page_key in (
10031009
"endCursor",
1004-
"hasNextPage",
1010+
(
1011+
"hasNextPage"
1012+
if self._order == SortOrder.ascending
1013+
else "hasPreviousPage"
1014+
),
10051015
):
10061016
output.append(node_offset + page_key)
10071017
output.append(edges_offset + "}")

0 commit comments

Comments
 (0)