mix pd.gen.model (PropertyDamage v0.2.0)
View SourceGenerate a PropertyDamage model module.
Usage
mix pd.gen.model MyApp.TestModelOptions
--commands COMMANDS Comma-separated list of command module names
--projection NAME State projection module name
--assertion-projections NAMES Comma-separated list of assertion projection namesExamples
# Basic model
mix pd.gen.model MyApp.TestModel
# Model with commands specified
mix pd.gen.model MyApp.TestModel --commands CreateUser,UpdateUser,DeleteUser
# Full specification
mix pd.gen.model MyApp.TestModel \
--commands CreateUser,UpdateUser,DeleteUser \
--projection MyApp.Projections.ModelState \
--assertion-projections BalanceChecker,AuditLogProjections
All projections use PropertyDamage.Model.Projection and can:
- Track state via
apply/2 - Define synchronous assertions via
@trigger - Define temporal assertions via
@poll_state
The command_sequence_projection is the primary projection used for command generation.
The assertion_projections are additional projections for invariants and side tracking.