View Source Ash.Dsl behaviour (ash v1.53.2)
The primary entry point for adding a DSL to a module.
To add a DSL to a module, add use Ash.Dsl, ...options
. The options supported with use Ash.Dsl
are:
:single_extension_kinds
- The extension kinds that are allowed to have a single value. For example:[:data_layer]
The default value is[]
.:many_extension_kinds
- The extension kinds that can have multiple values. e.g[notifiers: [Notifier1, Notifier2]]
The default value is[]
.:untyped_extensions?
- Whether or not to support anextensions
key which contains untyped extensions The default value istrue
.:default_extensions
- The extensions that are included by default. e.g[data_layer: Default, notifiers: [Notifier1]]
Default values for single extension kinds are overwritten if specified by the implementor, while many extension kinds are appended to if specified by the implementor. The default value is[]
.
See the callbacks defined in this module to augment the behavior/compilation of the module getting a Dsl.
Link to this section Summary
Callbacks
Handle options in the context of the module, after all extensions have been processed. Must return a quote
block.
Handle options in the context of the module. Must return a quote
block.
Validate/add options. Those options will be passed to handle_opts
and handle_before_compile
Link to this section Types
@type entity() :: %Ash.Dsl.Entity{ args: term(), auto_set_fields: term(), deprecations: term(), describe: term(), docs: term(), entities: term(), examples: term(), hide: term(), links: term(), modules: term(), name: term(), no_depend_modules: term(), recursive_as: term(), schema: term(), snippet: term(), target: term(), transform: term() }
@type opts() :: Keyword.t()
Link to this section Callbacks
Handle options in the context of the module, after all extensions have been processed. Must return a quote
block.
Handle options in the context of the module. Must return a quote
block.
If you want to persist anything in the DSL persistence layer,
use @persist {:key, value}
. It can be called multiple times to
persist multiple times.
Validate/add options. Those options will be passed to handle_opts
and handle_before_compile