mirror of
https://github.com/ash-project/ash_oban.git
synced 2024-09-21 05:43:24 +12:00
12f4207193
improvement: authorize?: true always
25 lines
612 B
Elixir
25 lines
612 B
Elixir
defmodule AshOban.Changes.RunObanTrigger do
|
|
@moduledoc """
|
|
Runs an oban trigger by name.
|
|
"""
|
|
|
|
use Ash.Resource.Change
|
|
|
|
def change(changeset, opts, context) do
|
|
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 ->
|
|
AshOban.run_trigger(
|
|
result,
|
|
trigger,
|
|
Keyword.put(opts[:oban_job_opts] || [], :actor, context.actor)
|
|
)
|
|
|
|
{:ok, result}
|
|
end)
|
|
end
|
|
end
|