core.container.repositories¶
src.core.container.repositories
¶
Repository dependency factories.
Request-scoped repository instances for domain entity persistence. Each request gets fresh repository instances with shared session.
Reference
See docs/architecture/dependency-injection-architecture.md for complete patterns and usage examples.
Classes¶
Functions¶
get_user_repository
async
¶
Get user repository (request-scoped).
Creates new repository instance per request with database session. Repository provides CRUD operations for User domain entities.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
session
|
AsyncSession
|
Database session for request duration. Injected via Depends(get_db_session). |
Depends(get_db_session)
|
Returns:
| Type | Description |
|---|---|
UserRepository
|
UserRepository instance. |
Usage
Application Layer (command handlers)¶
from src.core.container import get_user_repository user_repo = await anext(get_user_repository()) user = await user_repo.find_by_email("user@example.com")
Presentation Layer (FastAPI Depends)¶
from fastapi import Depends from src.infrastructure.persistence.repositories import UserRepository
@router.post("/users") async def create_user( user_repo: UserRepository = Depends(get_user_repository) ): await user_repo.save(user)
Reference
- docs/architecture/authentication-architecture.md (Lines 589-593)
Source code in src/core/container/repositories.py
get_provider_connection_repository
async
¶
get_provider_connection_repository(
session: AsyncSession = Depends(get_db_session),
) -> ProviderConnectionRepository
Get provider connection repository (request-scoped).
Creates new repository instance per request with database session. Repository provides CRUD operations for ProviderConnection domain entities.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
session
|
AsyncSession
|
Database session for request duration. Injected via Depends(get_db_session). |
Depends(get_db_session)
|
Returns:
| Type | Description |
|---|---|
ProviderConnectionRepository
|
ProviderConnectionRepository instance. |
Usage
Application Layer (command handlers)¶
from src.core.container import get_provider_connection_repository conn_repo = await anext(get_provider_connection_repository()) conn = await conn_repo.find_by_id(connection_id)
Presentation Layer (FastAPI Depends)¶
from fastapi import Depends from src.infrastructure.persistence.repositories import ProviderConnectionRepository
@router.get("/providers/connections/{id}") async def get_connection( conn_repo: ProviderConnectionRepository = Depends(get_provider_connection_repository) ): return await conn_repo.find_by_id(id)
Reference
- docs/architecture/repository-pattern.md
Source code in src/core/container/repositories.py
get_provider_repository
async
¶
Get provider repository (request-scoped).
Creates new repository instance per request with database session. Repository provides CRUD operations for Provider domain entities.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
session
|
AsyncSession
|
Database session for request duration. Injected via Depends(get_db_session). |
Depends(get_db_session)
|
Returns:
| Type | Description |
|---|---|
ProviderRepository
|
ProviderRepository instance. |
Usage
Application Layer¶
from src.core.container import get_provider_repository provider_repo = await anext(get_provider_repository()) provider = await provider_repo.find_by_slug("schwab")
Presentation Layer (FastAPI Depends)¶
from fastapi import Depends
@router.get("/providers/{slug}") async def get_provider( provider_repo: ProviderRepository = Depends(get_provider_repository) ): return await provider_repo.find_by_slug(slug)
Source code in src/core/container/repositories.py
get_account_repository
async
¶
Get account repository (request-scoped).
Creates new repository instance per request with database session. Repository provides CRUD operations for Account domain entities.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
session
|
AsyncSession
|
Database session for request duration. Injected via Depends(get_db_session). |
Depends(get_db_session)
|
Returns:
| Type | Description |
|---|---|
AccountRepository
|
AccountRepository instance. |
Usage
Application Layer (command handlers)¶
from src.core.container import get_account_repository account_repo = await anext(get_account_repository()) account = await repo.find_by_id(account_id)
Presentation Layer (FastAPI Depends)¶
from fastapi import Depends from src.infrastructure.persistence.repositories import AccountRepository
@router.get("/accounts/{id}") async def get_account( account_repo: AccountRepository = Depends(get_account_repository) ): return await account_repo.find_by_id(id)
Reference
- docs/architecture/repository-pattern.md
Source code in src/core/container/repositories.py
get_transaction_repository
async
¶
get_transaction_repository(
session: AsyncSession = Depends(get_db_session),
) -> TransactionRepository
Get transaction repository (request-scoped).
Creates new repository instance per request with database session. Repository provides CRUD operations for Transaction domain entities.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
session
|
AsyncSession
|
Database session for request duration. Injected via Depends(get_db_session). |
Depends(get_db_session)
|
Returns:
| Type | Description |
|---|---|
TransactionRepository
|
TransactionRepository instance. |
Usage
Application Layer (command handlers)¶
from src.core.container import get_transaction_repository tx_repo = await anext(get_transaction_repository()) transactions = await tx_repo.find_by_account_id(account_id)
Presentation Layer (FastAPI Depends)¶
from fastapi import Depends from src.infrastructure.persistence.repositories import TransactionRepository
@router.get("/transactions") async def list_transactions( tx_repo: TransactionRepository = Depends(get_transaction_repository) ): return await tx_repo.find_by_account_id(account_id, limit=50)
Reference
- docs/architecture/repository-pattern.md