2023-04-28 14:07:05 +12:00
|
|
|
defmodule AshOban.Changes.RunObanTrigger do
|
2023-04-28 14:36:29 +12:00
|
|
|
@moduledoc """
|
|
|
|
Runs an oban trigger by name.
|
|
|
|
"""
|
|
|
|
|
2023-04-28 14:07:05 +12:00
|
|
|
use Ash.Resource.Change
|
|
|
|
|
2024-02-21 07:02:43 +13:00
|
|
|
def change(changeset, opts, context) do
|
2023-04-28 14:07:05 +12:00
|
|
|
trigger = AshOban.Info.oban_trigger(changeset.resource, opts[:trigger])
|
|
|
|
|
|
|
|
if !trigger do
|
|
|
|
raise "No such trigger #{opts[:trigger]} for resource #{inspect(changeset.resource)}"
|
|
|
|
end
|
|
|
|
|
|
|
|
Ash.Changeset.after_action(changeset, fn _changeset, result ->
|
2024-02-21 07:02:43 +13:00
|
|
|
AshOban.run_trigger(
|
|
|
|
result,
|
|
|
|
trigger,
|
|
|
|
Keyword.put(opts[:oban_job_opts] || [], :actor, context.actor)
|
|
|
|
)
|
|
|
|
|
2023-04-28 14:07:05 +12:00
|
|
|
{:ok, result}
|
|
|
|
end)
|
|
|
|
end
|
|
|
|
end
|