defmodule Ash.Actions.Flows.Read do
@moduledoc """
Execute a read action.
"""
require Ash.Flags
use Ash.Flow
flow do
argument :query, :struct do
allow_nil? false
constraints instance_of: Ash.Query
end
argument :action, :struct do
allow_nil? false
constraints instance_of: Ash.Resource.Actions.Read
end
returns :fake_result
end
steps do
custom :fake_result, Ash.Actions.Flows.Read.FakeResult do
input %{query: arg(:query), action: arg(:action)}
end
end
@dialyzer {:no_return, [run: 3]}
def run(query, action, opts) do
Ash.Flags.assert!(:read_uses_flow?, true)
__MODULE__
|> Ash.Flow.run(%{query: query, action: action}, opts)
|> case do
result when result.errors == [] ->
{:ok, result.result}
result ->
{:error, result}
end
end
end