sqlalchemy_async_repositories.pagination.strategies.base ======================================================== .. py:module:: sqlalchemy_async_repositories.pagination.strategies.base .. autoapi-nested-parse:: 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 ------- .. autoapisummary:: sqlalchemy_async_repositories.pagination.strategies.base.IPaginationStrategy Module Contents --------------- .. py:class:: IPaginationStrategy Bases: :py:obj:`Protocol` Protocol 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 .. py:method:: execute(db: sqlalchemy.ext.asyncio.AsyncSession, model_class: Type[sqlalchemy.orm.DeclarativeBase], page: int, page_size: int, filters: Optional[List[sqlalchemy_async_repositories.pagination.models.FilterSpec]], sort: Optional[List[sqlalchemy_async_repositories.pagination.models.SortSpec]]) -> sqlalchemy_async_repositories.pagination.models.PaginatedResult :async: 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