defmodule Ash.Resource.Change.SetContext do @moduledoc false use Ash.Resource.Change def change(changeset, opts, _context) do context = case opts[:context] do {m, f, a} when is_atom(m) and is_atom(f) and is_list(a) -> apply(m, f, [changeset | a]) other -> {:ok, other} end case context do {:ok, context} -> Ash.Changeset.set_context(changeset, context) {:error, error} -> Ash.Changeset.add_error(changeset, error) end end end