pypaginate.adapters.sqlalchemy.cursor
Cursor/keyset pagination backends (async and sync).
Implements CursorBackend[T] protocol using built-in cursor
encoding and keyset WHERE clause construction. Requires the query
to have an ORDER BY clause.
Classes
Async cursor/keyset pagination backend. |
|
Sync cursor/keyset pagination backend. |
Module Contents
- class pypaginate.adapters.sqlalchemy.cursor.SQLAlchemyCursorBackend(session: sqlalchemy.ext.asyncio.AsyncSession)
Bases:
Generic[ItemT]Async cursor/keyset pagination backend.
Satisfies
CursorBackend[ItemT]protocol.- Parameters:
session – An async SQLAlchemy session.
- async fetch_page(query: sqlalchemy.sql.Select[Any], *, limit: int, after: str | None = None, before: str | None = None) tuple[list[ItemT], str | None, str | None]
Fetch a keyset-paginated page.
- Parameters:
query – A SQLAlchemy Select with ORDER BY.
limit – Maximum items per page.
after – Cursor for the next page.
before – Cursor for the previous page.
- Returns:
Tuple of (items, next_cursor, prev_cursor).
- class pypaginate.adapters.sqlalchemy.cursor.SyncSQLAlchemyCursorBackend(session: sqlalchemy.orm.Session)
Bases:
Generic[ItemT]Sync cursor/keyset pagination backend.
Satisfies cursor backend contract for synchronous sessions.
- Parameters:
session – A synchronous SQLAlchemy session.
- fetch_page(query: sqlalchemy.sql.Select[Any], *, limit: int, after: str | None = None, before: str | None = None) tuple[list[ItemT], str | None, str | None]
Fetch a keyset-paginated page.
- Parameters:
query – A SQLAlchemy Select with ORDER BY.
limit – Maximum items per page.
after – Cursor for the next page.
before – Cursor for the previous page.
- Returns:
Tuple of (items, next_cursor, prev_cursor).