sqlalchemy_async_repositories.base¶
Base repository - orchestrates use case handlers.
Architecture: - use_cases/ - Query/Command handlers organized by use case - pagination/ - Strategy Pattern for pagination backends
Attributes¶
Classes¶
Base repository orchestrating use case handlers. |
Module Contents¶
- sqlalchemy_async_repositories.base.T¶
- class sqlalchemy_async_repositories.base.BaseRepository(db_session: sqlalchemy.ext.asyncio.AsyncSession, model_class: Type[T])¶
Bases:
sqlalchemy_async_repositories.interfaces.IRepository[T],Generic[T]Base repository orchestrating use case handlers.
Structure mirrors GridFlow conventions: - use_cases/{use_case_name}/query_handler.py - use_cases/{use_case_name}/command_handler.py - use_cases/{use_case_name}/query_model.py - use_cases/{use_case_name}/command_model.py
- db¶
- model_class¶
- async get_by_id(entity_id: Any) T | None¶
Query: Get entity by ID.
- async get_all(limit: int | None = None, offset: int = 0) List[T]¶
Query: Get all entities.
- async exists(entity_id: Any) bool¶
Query: Check if entity exists.
- async count() int¶
Query: Count total entities.
- async create(entity: T) T¶
Command: Create new entity.
- async update(entity: T) T¶
Command: Update existing entity.
- async delete(entity_id: Any) bool¶
Command: Delete entity.
- async find_paginated(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[T]¶
Query: Paginated results using Strategy Pattern.
- get_pagination_backend_info() dict¶
Get current pagination backend info (debugging/monitoring).
- Returns:
dict: Backend metadata (FastCRUD or Native, availability)
- Example:
>>> repo = UserRepository(session, UserORM) >>> info = repo.get_pagination_backend_info() >>> print(info["backend"]) # "FastCRUD" or "Native"