View Source Ash.ActionInput (ash v3.4.45)

Input for a custom action

Summary

Functions

Add an error to the errors list and mark the action input as invalid.

Fetches the value of an argument provided to the input or :error.

Creates a new input for a generic action

Gets the value of an argument provided to the input.

Set an argument value

Deep merges the provided map into the input context that can be used later

Types

t()

@type t() :: %Ash.ActionInput{
  action: Ash.Resource.Actions.Action.t() | nil,
  arguments: map(),
  context: map(),
  domain: Ash.Domain.t(),
  errors: term(),
  invalid_keys: MapSet.t(),
  params: map(),
  resource: Ash.Resource.t(),
  tenant: term(),
  valid?: boolean()
}

Functions

add_error(input, errors, path \\ [])

@spec add_error(
  t(),
  Ash.Error.error_input() | [Ash.Error.error_input()],
  Ash.Error.path_input()
) :: t()

Add an error to the errors list and mark the action input as invalid.

See Ash.Error.to_ash_error/3 for more on supported values for error

fetch_argument(input, argument)

@spec fetch_argument(t(), atom() | String.t()) :: {:ok, term()} | :error

Fetches the value of an argument provided to the input or :error.

for_action(resource_or_input, action, params, opts \\ [])

@spec for_action(
  resource_or_input :: Ash.Resource.t() | t(),
  action :: atom(),
  params :: map(),
  opts :: Keyword.t()
) :: t()

Creates a new input for a generic action

Options

  • :domain (Ash.Domain) - The domain to use for the action. The resource's domain is used by default.

  • :context (map/0) - Context to set on the action input. The default value is %{}.

  • :authorize? - Whether or not to run authorization on the action. Default behavior of this option is controlled by the domain.

  • :tenant (term/0) - The tenant to use for the action.

  • :actor (term/0) - The actor performing the action

  • :skip_unknown_inputs - A list of unknow inputs to skip. Use :* to skip all unknown inputs.

  • :tracer (term/0) - A tracer or list of tracers to trace action execution.

  • :private_arguments (map/0) - A list of private arguments to be set before the action is invoked. The default value is %{}.

get_argument(input, argument)

@spec get_argument(t(), atom() | String.t()) :: term()

Gets the value of an argument provided to the input.

new(resource, domain \\ nil)

set_argument(input, argument, value)

@spec set_argument(input :: t(), name :: atom(), value :: term()) :: t()

Set an argument value

set_context(input, map)

@spec set_context(t(), map() | nil) :: t()

Deep merges the provided map into the input context that can be used later

Do not use the private key in your custom context, as that is reserved for internal use.

set_tenant(input, tenant)

@spec set_tenant(t(), Ash.ToTenant.t()) :: t()