application.queries.handlers.get_user_networth_handler¶
src.application.queries.handlers.get_user_networth_handler
¶
GetUserNetWorth query handler.
Handles requests to calculate user's aggregated net worth. Returns DTO with total balance across all active accounts.
Architecture: - Application layer handler (orchestrates data retrieval) - Returns Result[DTO, str] (explicit error handling) - NO domain events (queries are side-effect free)
Reference
- docs/architecture/cqrs-pattern.md
- Implementation Plan: Issue #257, Phase 7
Classes¶
NetWorthResult
dataclass
¶
Net worth result DTO.
Represents aggregated portfolio value for API response.
Attributes:
| Name | Type | Description |
|---|---|---|
net_worth |
Decimal
|
Total balance across all active accounts. |
account_count |
int
|
Number of active accounts included in calculation. |
currency |
str
|
Base currency for calculation (currently always USD). |
Source code in src/application/queries/handlers/get_user_networth_handler.py
GetUserNetWorthHandler
¶
Handler for GetUserNetWorth query.
Calculates total balance across all active accounts for a user. Uses AccountRepository aggregate methods.
Dependencies (injected via constructor): - AccountRepository: For querying account balances
Source code in src/application/queries/handlers/get_user_networth_handler.py
Functions¶
__init__
¶
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
account_repo
|
AccountRepository
|
Repository for account balance queries. |
required |
Source code in src/application/queries/handlers/get_user_networth_handler.py
handle
async
¶
Handle GetUserNetWorth query.
Calculates net worth by summing all active account balances.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
query
|
GetUserNetWorth
|
GetUserNetWorth query with user_id. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
Success |
NetWorthResult
|
Net worth calculated successfully. |
Note
This query always succeeds - returns 0 if user has no accounts. No failure cases since we're just summing balances.