Inbound port for domain command and query validation.
Responsibilities
- Validate commands and queries against business rules.
- Return structured validation errors.
Non-Responsibilities
- Execute commands or queries.
- Implement business logic directly.
ValidationPort
Bases: InboundPort
Inbound port for domain command and query validation.
Responsibilities
- Inspect command and query payloads for rule violations.
- Return a list of
RuleViolationError instances.
Non-Responsibilities
- Enforce authorization (handled by
AuthorizationPort).
- Modify command or query state.
Example
class CreateOrderCommand:
product_id: str
quantity: int
class CreateOrderValidator(ValidationPort[CreateOrderCommand, object]):
async def validate_command(
self, command: Command[CreateOrderCommand]
) -> list[RuleViolationError]:
return []
...
Source code in src/forging_blocks/application/ports/inbound/validation_port.py
| class ValidationPort[CommandPayloadType, QueryPayloadType](InboundPort):
"""Inbound port for domain command and query validation.
Responsibilities:
- Inspect command and query payloads for rule violations.
- Return a list of ``RuleViolationError`` instances.
Non-Responsibilities:
- Enforce authorization (handled by ``AuthorizationPort``).
- Modify command or query state.
Example:
```python
class CreateOrderCommand:
product_id: str
quantity: int
class CreateOrderValidator(ValidationPort[CreateOrderCommand, object]):
async def validate_command(
self, command: Command[CreateOrderCommand]
) -> list[RuleViolationError]:
return []
...
```
"""
@abstractmethod
async def validate_command(
self, command: Command[CommandPayloadType]
) -> list[RuleViolationError]:
"""Validate a domain command."""
...
@abstractmethod
async def validate_query(self, query: Query[QueryPayloadType]) -> list[RuleViolationError]:
"""Validate a domain query."""
...
|
validate_command(command: Command[CommandPayloadType]) -> list[RuleViolationError]
abstractmethod
async
Validate a domain command.
Source code in src/forging_blocks/application/ports/inbound/validation_port.py
| @abstractmethod
async def validate_command(
self, command: Command[CommandPayloadType]
) -> list[RuleViolationError]:
"""Validate a domain command."""
...
|
validate_query(query: Query[QueryPayloadType]) -> list[RuleViolationError]
abstractmethod
async
Validate a domain query.
Source code in src/forging_blocks/application/ports/inbound/validation_port.py
| @abstractmethod
async def validate_query(self, query: Query[QueryPayloadType]) -> list[RuleViolationError]:
"""Validate a domain query."""
...
|