improvement: read with primary read for trigger

This commit is contained in:
Zach Daniel 2023-07-19 14:08:08 -04:00
parent 60c449b42c
commit 9e07f3f699

View file

@ -165,7 +165,9 @@ defmodule AshOban.Transformers.DefineSchedulers do
|> insert()
rescue
e ->
Logger.error("Error running AshOban scheduler #{__MODULE__}.\n#{Exception.format(:error, e, __STACKTRACE__)}")
Logger.error(
"Error running AshOban scheduler #{__MODULE__}.\n#{Exception.format(:error, e, __STACKTRACE__)}"
)
reraise e, __STACKTRACE__
end
@ -277,7 +279,7 @@ defmodule AshOban.Transformers.DefineSchedulers do
handle_error = handle_error(trigger, resource, api)
work = work(trigger, worker, pro?, api)
work = work(trigger, worker, pro?, resource, api)
Module.create(
worker_module_name,
@ -369,7 +371,7 @@ defmodule AshOban.Transformers.DefineSchedulers do
end
end
defp work(trigger, worker, pro?, api) do
defp work(trigger, worker, pro?, resource, api) do
function_name =
if pro? do
:process
@ -377,6 +379,15 @@ defmodule AshOban.Transformers.DefineSchedulers do
:perform
end
read_action =
case Ash.Resource.Info.primary_action(resource, :read) do
nil ->
trigger.read_action
%{name: name} ->
name
end
if trigger.state != :active do
quote location: :keep do
@impl unquote(worker)
@ -391,7 +402,7 @@ defmodule AshOban.Transformers.DefineSchedulers do
query()
|> Ash.Query.do_filter(primary_key)
|> Ash.Query.set_context(%{private: %{ash_oban?: true}})
|> Ash.Query.for_read(unquote(trigger.read_action))
|> Ash.Query.for_read(unquote(read_action))
|> unquote(api).read_one()
|> case do
{:ok, nil} ->