sqlalchemy_async_repositories.use_cases.find_paginated.query_handler¶
Query handler for find_paginated use case.
Architecture Patterns: - CQRS Pattern: Query-side handler for paginated reads - Strategy Pattern: Delegates to IPaginationStrategy (FastCRUD or Native) - Factory Pattern: Uses PaginationStrategyFactory for strategy creation - Protocol Pattern: IPaginationStrategy defines type-safe interface (PEP 544)
Pattern Interactions: 1. Factory creates appropriate strategy at init 2. Strategy delegates execution to implementation (FastCRUD or Native) 3. Protocol ensures type safety without inheritance 4. Handler coordinates patterns without implementing business logic
Classes¶
Handler for find_paginated query using Strategy + Factory patterns. |
Module Contents¶
- class sqlalchemy_async_repositories.use_cases.find_paginated.query_handler.FindPaginatedHandler(db: sqlalchemy.ext.asyncio.AsyncSession, model_class: Type[sqlalchemy.orm.DeclarativeBase])¶
Handler for find_paginated query using Strategy + Factory patterns.
Responsibilities: - Coordinate pagination request - Delegate to appropriate strategy (via Factory) - Return standardized PaginatedResult
Does NOT: - Implement pagination logic (delegated to strategies) - Decide which strategy to use (delegated to factory)
- strategy: sqlalchemy_async_repositories.pagination.strategies.IPaginationStrategy¶
- db¶
- model_class¶
- get_backend_info() dict¶
Get current pagination backend info (debugging/monitoring).
- Returns:
dict: Backend metadata (name, class, availability)
- Example:
>>> handler = FindPaginatedHandler(session, UserORM) >>> info = handler.get_backend_info() >>> print(info["backend"]) # "FastCRUD" or "Native"
- async execute(page: int = 1, page_size: int = 10, filters: List[sqlalchemy_async_repositories.pagination.models.FilterSpec] | None = None, sort: List[sqlalchemy_async_repositories.pagination.models.SortSpec] | None = None) sqlalchemy_async_repositories.pagination.models.PaginatedResult¶
Execute find_paginated query using selected strategy.
- Args:
page: Page number (1-indexed) page_size: Items per page filters: Filter specifications sort: Sort specifications
- Returns:
PaginatedResult: Paginated result with items and metadata