View Source Ash.Resource.Preparation behaviour (ash v2.18.2)

The behaviour for an action-specific query preparation.

init/1 is defined automatically by use Ash.Resource.Preparation, but can be implemented if you want to validate/transform any options passed to the module.

The main function is prepare/3. It takes the query, any options that were provided when this preparation was configured on a resource, and the context, which currently only has the actor.

To access any query arguments from within a preparation, make sure you are using Ash.Query.get_argument/2 as the argument keys may be strings or atoms.

Summary

Types

@type context() :: %{
  optional(:actor) => Ash.Resource.record(),
  optional(any()) => any()
}
@type ref() :: {module(), Keyword.t()} | module()
@type t() :: %Ash.Resource.Preparation{preparation: term()}

Callbacks

@callback init(opts :: Keyword.t()) :: {:ok, Keyword.t()} | {:error, term()}
Link to this callback

prepare(query, opts, context)

View Source
@callback prepare(query :: Ash.Query.t(), opts :: Keyword.t(), context :: context()) ::
  Ash.Query.t()