View Source Ash.Resource.Preparation behaviour (ash v1.53.2)

The behaviour for an action-specific query preparation.

To implement one, simply implement the behaviour. 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 changeset, any options that were provided when this change 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.

Link to this section Summary

Link to this section Types

@type context() :: %{actor: Ash.Resource.record()} | %{}
@type t() :: %Ash.Resource.Preparation{preparation: term()}

Link to this section Callbacks

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

prepare(query, t, context)

View Source
@callback prepare(query, Keyword.t(), context()) :: query when query: struct()