Skip to content

Commit bf27b85

Browse files
tbrainshauntedanon4200anand2312
authored
limit and order on foreign tables (#120)
* limit and order on foreign tables * Apply suggestions from code review Co-authored-by: Anand <[email protected]> * Updated docstrings for order and limit * Changed limit modifier to use limit param instead of range headers Co-authored-by: privaterepo <[email protected]> Co-authored-by: Anand <[email protected]>
1 parent 5c0c128 commit bf27b85

File tree

1 file changed

+20
-6
lines changed

1 file changed

+20
-6
lines changed

postgrest/base_request_builder.py

+20-6
Original file line numberDiff line numberDiff line change
@@ -366,30 +366,44 @@ def __init__(
366366
BaseFilterRequestBuilder.__init__(self, session, headers, params)
367367

368368
def order(
369-
self: _FilterT, column: str, *, desc: bool = False, nullsfirst: bool = False
369+
self: _FilterT,
370+
column: str,
371+
*,
372+
desc: bool = False,
373+
nullsfirst: bool = False,
374+
foreign_table: Optional[str] = None,
370375
) -> _FilterT:
371376
"""Sort the returned rows in some specific order.
372377
373378
Args:
374379
column: The column to order by
375380
desc: Whether the rows should be ordered in descending order or not.
376381
nullsfirst: nullsfirst
382+
foreign_table: Foreign table name whose results are to be ordered.
383+
.. versionchanged:: 0.10.3
384+
Allow ordering results for foreign tables with the foreign_table parameter.
377385
"""
378386
self.params = self.params.add(
379-
"order",
387+
f"{foreign_table}.order" if foreign_table else "order",
380388
f"{column}{'.desc' if desc else ''}{'.nullsfirst' if nullsfirst else ''}",
381389
)
382390
return self
383391

384-
def limit(self: _FilterT, size: int, *, start: int = 0) -> _FilterT:
392+
def limit(
393+
self: _FilterT, size: int, *, foreign_table: Optional[str] = None
394+
) -> _FilterT:
385395
"""Limit the number of rows returned by a query.
386396
387397
Args:
388398
size: The number of rows to be returned
389-
start: Offset to start from
399+
foreign_table: Foreign table name to limit
400+
.. versionchanged:: 0.10.3
401+
Allow limiting results returned for foreign tables with the foreign_table parameter.
390402
"""
391-
self.headers["Range-Unit"] = "items"
392-
self.headers["Range"] = f"{start}-{start + size - 1}"
403+
self.params = self.params.add(
404+
f"{foreign_table}.limit" if foreign_table else "limit",
405+
size,
406+
)
393407
return self
394408

395409
def range(self: _FilterT, start: int, end: int) -> _FilterT:

0 commit comments

Comments
 (0)