Skip to content

Commit 762e91c

Browse files
CosmoVNatalia Grigoreva
authored andcommitted
sorting bugfix
1 parent 800f256 commit 762e91c

File tree

2 files changed

+4
-7
lines changed

2 files changed

+4
-7
lines changed

fastapi_jsonapi/common.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@
33
# noinspection PyProtectedMember
44
from pydantic.fields import FieldInfo
55

6-
from fastapi_jsonapi.types_metadata import ClientCanSetId, CustomFilterSQL, RelationshipInfo
6+
from fastapi_jsonapi.types_metadata import ClientCanSetId, CustomFilterSQL, CustomSortSQL, RelationshipInfo
77
from fastapi_jsonapi.utils.metadata_instance_search import MetadataInstanceSearch
88

99
search_client_can_set_id = MetadataInstanceSearch[ClientCanSetId](ClientCanSetId)
1010
search_relationship_info = MetadataInstanceSearch[RelationshipInfo](RelationshipInfo)
1111
search_custom_filter_sql = MetadataInstanceSearch[CustomFilterSQL](CustomFilterSQL)
12+
search_custom_sort_sql = MetadataInstanceSearch[CustomSortSQL](CustomSortSQL)
1213

1314

1415
def get_relationship_info_from_field_metadata(

fastapi_jsonapi/data_layers/sqla/query_building.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from sqlalchemy.orm.util import AliasedClass
1717
from sqlalchemy.sql.elements import BinaryExpression
1818

19-
from fastapi_jsonapi.common import search_custom_filter_sql
19+
from fastapi_jsonapi.common import search_custom_filter_sql, search_custom_sort_sql
2020
from fastapi_jsonapi.data_typing import TypeModel, TypeSchema
2121
from fastapi_jsonapi.exceptions import InvalidField, InvalidFilters, InvalidType
2222
from fastapi_jsonapi.exceptions.json_api import HTTPException
@@ -429,11 +429,7 @@ def build_sort_expressions(
429429
schema = relationships_info[relationship_path].target_schema
430430

431431
schema_field = schema.model_fields[field_name]
432-
custom_sort_sql: Optional[CustomSortSQL] = None
433-
for sort_sql in search_custom_filter_sql.iterate(field=schema_field):
434-
if sort_sql.op == sort_sql:
435-
custom_sort_sql = sort_sql
436-
break
432+
custom_sort_sql: Optional[CustomSortSQL] = search_custom_sort_sql.first(field=schema_field)
437433

438434
join_column = getattr(model, field_name)
439435
if custom_sort_sql is not None:

0 commit comments

Comments
 (0)