Example #1
0
 def _build_sort_expression(
     sort_field: Union[FieldProxy, SortExpression]
 ) -> SortExpression:
     return (
         SortExpression({+sort_field: 1})
         if not isinstance(sort_field, SortExpression)
         else sort_field
     )
Example #2
0
    def _validate_sort_argument(cls, sort: Any) -> Optional[SortExpression]:
        if sort is None:
            return None

        if isinstance(sort, tuple):
            for sorted_field in sort:
                if not isinstance(sorted_field, (FieldProxy, SortExpression)):
                    raise TypeError(
                        "sort elements have to be Model fields or asc, desc descriptors"
                    )
            sort_expression: Dict = {}
            for sort_field in sort:
                sort_expression.update(cls._build_sort_expression(sort_field))

            return SortExpression(sort_expression)

        if not isinstance(sort, (FieldProxy, SortExpression)):
            raise TypeError("sort has to be a Model field or "
                            "asc, desc descriptors or a tuple of these")

        return cls._build_sort_expression(sort)
Example #3
0
def test_sort_empty_repr():
    assert repr(SortExpression()) == "SortExpression()"