mirror of
https://github.com/ash-project/ash_oban.git
synced 2024-09-20 05:13:15 +12:00
improvement: read with primary read for trigger
This commit is contained in:
parent
60c449b42c
commit
9e07f3f699
1 changed files with 15 additions and 4 deletions
|
@ -165,7 +165,9 @@ defmodule AshOban.Transformers.DefineSchedulers do
|
||||||
|> insert()
|
|> insert()
|
||||||
rescue
|
rescue
|
||||||
e ->
|
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__
|
reraise e, __STACKTRACE__
|
||||||
end
|
end
|
||||||
|
@ -277,7 +279,7 @@ defmodule AshOban.Transformers.DefineSchedulers do
|
||||||
|
|
||||||
handle_error = handle_error(trigger, resource, api)
|
handle_error = handle_error(trigger, resource, api)
|
||||||
|
|
||||||
work = work(trigger, worker, pro?, api)
|
work = work(trigger, worker, pro?, resource, api)
|
||||||
|
|
||||||
Module.create(
|
Module.create(
|
||||||
worker_module_name,
|
worker_module_name,
|
||||||
|
@ -369,7 +371,7 @@ defmodule AshOban.Transformers.DefineSchedulers do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
defp work(trigger, worker, pro?, api) do
|
defp work(trigger, worker, pro?, resource, api) do
|
||||||
function_name =
|
function_name =
|
||||||
if pro? do
|
if pro? do
|
||||||
:process
|
:process
|
||||||
|
@ -377,6 +379,15 @@ defmodule AshOban.Transformers.DefineSchedulers do
|
||||||
:perform
|
:perform
|
||||||
end
|
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
|
if trigger.state != :active do
|
||||||
quote location: :keep do
|
quote location: :keep do
|
||||||
@impl unquote(worker)
|
@impl unquote(worker)
|
||||||
|
@ -391,7 +402,7 @@ defmodule AshOban.Transformers.DefineSchedulers do
|
||||||
query()
|
query()
|
||||||
|> Ash.Query.do_filter(primary_key)
|
|> Ash.Query.do_filter(primary_key)
|
||||||
|> Ash.Query.set_context(%{private: %{ash_oban?: true}})
|
|> 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()
|
|> unquote(api).read_one()
|
||||||
|> case do
|
|> case do
|
||||||
{:ok, nil} ->
|
{:ok, nil} ->
|
||||||
|
|
Loading…
Reference in a new issue