New factory DSL options: 1. `auto_build` allows you to provide a list of relationships which must also be built when building that factory. 2. `auto_load` allows you to provide a load statement for relationships and calculations that must be loaded when building that factory. Reviewed-on: #83 Co-authored-by: James Harton <james@harton.nz> Co-committed-by: James Harton <james@harton.nz>
5.4 KiB
DSL: Smokestack.Dsl
The DSL definition for the Smokestack DSL.
DSL Documentation
Index
- smokestack
- factory
- after_build
- attribute
- before_build
- factory
Docs
smokestack
- factory
- after_build
- attribute
- before_build
:domain
(module that adoptsAsh.Domain
) - The default Ash Domain to use when evaluating loads
factory
Define factories for a resource
* after_build
* attribute
* before_build
-
:domain
(module that adoptsAsh.Domain
) - The Ash Domain to use when evaluating loads -
:resource
(module that adoptsAsh.Resource
) - Required. An Ash Resource -
:variant
(t:atom/0
) - The name of a factory variant The default value is:default
. -
:auto_build
(one or a list oft:atom/0
) - A list of relationships that should always be built when building this factory The default value is[]
. -
:auto_load
- An Ash "load statement" to always apply when building this factory The default value is[]
.
after_build
Modify the record after building.
Allows you to provide a function which can modify the built record before returning.
These hooks are only applied when building records and not parameters.
:hook
(mfa or function of arity 1) - Required. A function which returns an updated record
attribute
-
:name
(t:atom/0
) - Required. The name of the target attribute -
:generator
- Required. A function which can generate an appropriate value for the attribute.œ
before_build
Modify the attributes before building.
Allows you to provide a function which can modify the the attributes before building.
:hook
(mfa or function of arity 1) - Required. A function which returns an updated record
smokestack
Nested DSLs
- factory
- after_build
- attribute
- before_build
Options
Name | Type | Default | Docs |
---|---|---|---|
domain {: #smokestack-domain } |
module |
The default Ash Domain to use when evaluating loads |
smokestack.factory
factory resource, variant \\ :default
Define factories for a resource
Nested DSLs
Arguments
Name | Type | Default | Docs |
---|---|---|---|
resource {: #smokestack-factory-resource .spark-required} |
module |
An Ash Resource | |
variant {: #smokestack-factory-variant } |
atom |
:default |
The name of a factory variant |
Options
Name | Type | Default | Docs |
---|---|---|---|
domain {: #smokestack-factory-domain } |
module |
The Ash Domain to use when evaluating loads | |
auto_build {: #smokestack-factory-auto_build } |
atom | list(atom) |
[] |
A list of relationships that should always be built when building this factory |
auto_load {: #smokestack-factory-auto_load } |
atom | keyword | list(atom | keyword) |
[] |
An Ash "load statement" to always apply when building this factory |
smokestack.factory.after_build
after_build hook
Modify the record after building.
Allows you to provide a function which can modify the built record before returning.
These hooks are only applied when building records and not parameters.
Arguments
Name | Type | Default | Docs |
---|---|---|---|
hook {: #smokestack-factory-after_build-hook .spark-required} |
(any -> any) | mfa |
A function which returns an updated record |
Introspection
Target: Smokestack.Dsl.AfterBuild
smokestack.factory.attribute
attribute name, generator
Arguments
Name | Type | Default | Docs |
---|---|---|---|
name {: #smokestack-factory-attribute-name .spark-required} |
atom |
The name of the target attribute | |
generator {: #smokestack-factory-attribute-generator .spark-required} |
(-> any) | mfa | (any -> any) | mfa | (any, any -> any) | mfa | Smokestack.Template.Choose | Smokestack.Template.Constant | Smokestack.Template.Cycle | Smokestack.Template.NTimes | Smokestack.Template.Sequence |
A function which can generate an appropriate value for the attribute.œ |
Introspection
Target: Smokestack.Dsl.Attribute
smokestack.factory.before_build
before_build hook
Modify the attributes before building.
Allows you to provide a function which can modify the the attributes before building.
Arguments
Name | Type | Default | Docs |
---|---|---|---|
hook {: #smokestack-factory-before_build-hook .spark-required} |
(any -> any) | mfa |
A function which returns an updated record |
Introspection
Target: Smokestack.Dsl.BeforeBuild
Introspection
Target: Smokestack.Dsl.Factory