sqlalchemy_async_repositories.pagination.strategies.base¶
Protocol for pagination strategies (Strategy Pattern).
This defines the interface that all pagination strategies must implement. Using Protocol (PEP 544) for structural subtyping - no inheritance needed.
Classes¶
Protocol for pagination strategies. |
Module Contents¶
- class sqlalchemy_async_repositories.pagination.strategies.base.IPaginationStrategy¶
Bases:
ProtocolProtocol for pagination strategies.
Implementations: - FastCRUDStrategy: Uses FastCRUD library (battle-tested, feature-rich) - NativeStrategy: Uses native SQLAlchemy (zero dependencies, fallback)
Why Protocol? - Type-safe without inheritance - Easy to test (mock the protocol) - Clear interface contract - IDE autocomplete support
- async execute(db: sqlalchemy.ext.asyncio.AsyncSession, model_class: Type[sqlalchemy.orm.DeclarativeBase], page: int, page_size: int, filters: List[sqlalchemy_async_repositories.pagination.models.FilterSpec] | None, sort: List[sqlalchemy_async_repositories.pagination.models.SortSpec] | None) sqlalchemy_async_repositories.pagination.models.PaginatedResult¶
Execute paginated query.
- Args:
db: Async database session model_class: SQLAlchemy model class page: Page number (1-indexed) page_size: Items per page filters: List of filter specifications sort: List of sort specifications
- Returns:
PaginatedResult with items and metadata