application.queries.holding_queries¶
src.application.queries.holding_queries
¶
Holding queries (CQRS read operations).
Queries represent requests for holding data. They are immutable dataclasses with question-like names. Queries NEVER change state.
Pattern: - Queries are data containers (no logic) - Handlers fetch and return data - Queries never change state - Queries do NOT emit domain events
Reference
- docs/architecture/cqrs-pattern.md
Classes¶
GetHolding
dataclass
¶
Get a single holding by ID.
Retrieves holding details for display. Includes ownership check via user_id (verified through account → connection).
Attributes:
| Name | Type | Description |
|---|---|---|
holding_id |
UUID
|
Holding to retrieve. |
user_id |
UUID
|
User requesting (for ownership verification). |
Example
query = GetHolding( ... holding_id=holding_id, ... user_id=user_id, ... ) result = await handler.handle(query)
Source code in src/application/queries/holding_queries.py
ListHoldingsByAccount
dataclass
¶
List all holdings for a specific account.
Retrieves all positions/holdings for an account. Optionally filtered to active holdings only.
Attributes:
| Name | Type | Description |
|---|---|---|
account_id |
UUID
|
Account whose holdings to list. |
user_id |
UUID
|
User requesting (for ownership verification). |
active_only |
bool
|
If True, only return active holdings. Default True (exclude sold/deactivated positions). |
asset_type |
str | None
|
Optional filter by asset type (e.g., "equity", "option"). Default None returns all types. |
Example
query = ListHoldingsByAccount( ... account_id=account_id, ... user_id=user_id, ... active_only=True, ... ) result = await handler.handle(query)
Source code in src/application/queries/holding_queries.py
ListHoldingsByUser
dataclass
¶
List all holdings across all accounts for a user.
Universal API - aggregates holdings from all accounts. Optionally filtered by active status and/or asset type.
Attributes:
| Name | Type | Description |
|---|---|---|
user_id |
UUID
|
User whose holdings to list. |
active_only |
bool
|
If True, only return active holdings. Default True (exclude sold/deactivated positions). |
asset_type |
str | None
|
Optional filter by asset type (e.g., "equity", "option"). Default None returns all types. |
symbol |
str | None
|
Optional filter by security symbol. Default None returns all symbols. |
Example
query = ListHoldingsByUser( ... user_id=user_id, ... active_only=True, ... asset_type="equity", ... ) result = await handler.handle(query)