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

FindPaginatedHandler

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