defmodule Ash.Resource.Preparation.Builtins do
@moduledoc "Builtin query preparations"
@doc """
Merges the given query context.
If an MFA is provided, it will be called with the changeset.
The MFA should return `{:ok, context_to_be_merged}` or `{:error, term}`
## Examples
change set_context(%{something_used_internally: true})
change set_context({MyApp.Context, :set_context, []})
"""
@spec set_context(context :: map | mfa) ::
Ash.Resource.Preparation.ref()
def set_context(context) do
{Ash.Resource.Preparation.SetContext, context: context}
end
@doc """
Passes the given keyword list to `Ash.Query.build/2` with the query being prepared.
This allows declaring simple query modifications in-line.
To see the available options, see `Ash.Query.build/2`
## Examples
prepare build(sort: [song_rank: :desc], limit: 10)
prepare build(load: [:friends])
"""
@spec build(Keyword.t()) :: Ash.Resource.Preparation.ref()
def build(options) do
{Ash.Resource.Preparation.Build, options: options}
end
end