View Source DSL: Ash.Domain.Dsl

domain

General domain configuration

Examples

domain do
  description """
  Resources related to the flux capacitor.
  """
end

Options

NameTypeDefaultDocs
descriptionString.tA description for the domain.

resources

List the resources of this domain

Nested DSLs

Examples

resources do
  resource MyApp.Tweet
  resource MyApp.Comment
end

Options

NameTypeDefaultDocs
allowmfaSupport a dynamic resource list by providing a callback that checks whether or not the resource should be allowed.
allow_unregistered?booleanfalseWhether the domain will support only registered entries or not.

resources.resource

resource resource

A resource present in the domain

Nested DSLs

Examples

resource Foo

Arguments

NameTypeDefaultDocs
resourcemodule

resources.resource.define

define name

Defines a function with the corresponding name and arguments. See the code interface guide for more.

Examples

define :get_user_by_id, action: :get_by_id, args: [:id], get?: true

Arguments

NameTypeDefaultDocs
nameatomThe name of the function that will be defined

Options

NameTypeDefaultDocs
actionatomThe name of the action that will be called. Defaults to the same name as the function.
argslist(atom | {:optional, atom})Map specific arguments to named inputs. Can provide any argument/attributes that the action allows.
not_found_error?booleantrueIf the action or interface is configured with get?: true, this determines whether or not an error is raised or nil is returned.
require_reference?booleantrueFor update and destroy actions, require a resource or identifier to be passed in as the first argument. Not relevant for other action types.
get?booleanfalseExpects to only receive a single result from a read action or a bulk update/destroy, and returns a single result instead of a list. Sets require_reference? to false automatically.
get_byatom | list(atom)Takes a list of fields and adds those fields as arguments, which will then be used to filter. Sets get? to true and require_reference? to false automatically. Adds filters for read, update and destroy actions, replacing the record first argument.
get_by_identityatomTakes an identity, gets its field list, and performs the same logic as get_by with those fields. Adds filters for read, update and destroy actions, replacing the record first argument.

Introspection

Target: Ash.Resource.Interface

resources.resource.define_calculation

define_calculation name

Defines a function with the corresponding name and arguments, that evaluates a calculation. Use :_record to take an instance of a record. See the code interface guide for more.

Examples

define_calculation :referral_link, User, args: [:id]
define_calculation :referral_link, User, args: [{:arg, :id}, {:ref, :id}]

Arguments

NameTypeDefaultDocs
nameatomThe name of the function that will be defined

Options

NameTypeDefaultDocs
calculationatomThe name of the calculation that will be evaluated. Defaults to the same name as the function.
argsany[]Supply field or argument values referenced by the calculation, in the form of :name, {:arg, :name} and/or {:ref, :name}. See the code interface guide for more.

Introspection

Target: Ash.Resource.CalculationInterface

Introspection

Target: Ash.Domain.Dsl.ResourceReference

execution

Options for how requests are executed using this domain

Examples

execution do
  timeout :timer.seconds(30)
end

Options

NameTypeDefaultDocs
timeouttimeout:infinityThe default timeout in milliseconds to use for requests using this domain. See the timeouts guide for more.
trace_nameString.tThe name to use in traces. Defaults to the last part of the module. See the monitoring guide for more

authorization

Options for how requests are authorized using this domain. See the Sensitive Data guide for more.

Examples

authorization do
  authorize :always
end

Options

NameTypeDefaultDocs
require_actor?booleanfalseRequires that an actor has been supplied.
authorize:always | :by_default | :when_requested:by_defaultWhen to run authorization for a given request.