mirror of
https://github.com/ash-project/ash_oban.git
synced 2024-09-19 12:53:34 +12:00
Fix/2.0 state active (#23)
* fix: oban pro configuration * fix: oban pro configuration tutorial * fix: oban pro configuration * chore: raise message review * fix: oban pro state active * chore: formatting
This commit is contained in:
parent
cc78a8e980
commit
6bc1953e8e
2 changed files with 37 additions and 27 deletions
|
@ -546,7 +546,8 @@ defmodule AshOban do
|
|||
Oban.Plugins.Cron
|
||||
end
|
||||
|
||||
if (pro_dynamic_cron_plugin? || pro_dynamic_queues_plugin?) && base[:engine] not in [Oban.Pro.Queue.SmartEngine, Oban.Pro.Engines.Smart] do
|
||||
if (pro_dynamic_cron_plugin? || pro_dynamic_queues_plugin?) &&
|
||||
base[:engine] not in [Oban.Pro.Queue.SmartEngine, Oban.Pro.Engines.Smart] do
|
||||
raise """
|
||||
Expected oban engine to be Oban.Pro.Queue.SmartEngine or Oban.Pro.Engines.Smart, but got #{inspect(base[:engine])}.
|
||||
This expectation is because you're using at least one Oban.Pro plugin`.
|
||||
|
@ -596,13 +597,16 @@ defmodule AshOban do
|
|||
Enum.map(plugins, fn
|
||||
{^cron_plugin, config} ->
|
||||
opts =
|
||||
case trigger.state do
|
||||
:paused ->
|
||||
case {cron_plugin, trigger.state} do
|
||||
{_cron_plugin, :paused} ->
|
||||
[paused: true]
|
||||
|
||||
:deleted ->
|
||||
{_cron_plugin, :deleted} ->
|
||||
[delete: true]
|
||||
|
||||
{Oban.Pro.Plugins.DynamicCron, :active} ->
|
||||
[paused: false]
|
||||
|
||||
_ ->
|
||||
[]
|
||||
end
|
||||
|
@ -647,7 +651,9 @@ defmodule AshOban do
|
|||
config[:plugins]
|
||||
|> Enum.find({nil, nil}, fn {plugin, _opts} -> plugin == Oban.Pro.Plugins.DynamicQueues end)
|
||||
|
||||
if !is_list(plugin_config) || !Keyword.has_key?(plugin_config, :queues) || !is_list(plugin_config[:queues]) || !Keyword.has_key?(plugin_config[:queues], trigger.queue) do
|
||||
if !is_list(plugin_config) || !Keyword.has_key?(plugin_config, :queues) ||
|
||||
!is_list(plugin_config[:queues]) ||
|
||||
!Keyword.has_key?(plugin_config[:queues], trigger.queue) do
|
||||
raise """
|
||||
Must configure the queue `:#{trigger.queue}`, required for
|
||||
the trigger `:#{trigger.name}` on #{inspect(resource)}
|
||||
|
|
|
@ -83,43 +83,47 @@ defmodule AshObanTest do
|
|||
|
||||
test "oban pro configuration" do
|
||||
config =
|
||||
AshOban.config([Api], [
|
||||
AshOban.config([Api],
|
||||
engine: Oban.Pro.Engines.Smart,
|
||||
plugins: [
|
||||
{Oban.Pro.Plugins.DynamicCron, [
|
||||
timezone: "Europe/Rome",
|
||||
sync_mode: :automatic,
|
||||
crontab: []
|
||||
]},
|
||||
{Oban.Pro.Plugins.DynamicCron,
|
||||
[
|
||||
timezone: "Europe/Rome",
|
||||
sync_mode: :automatic,
|
||||
crontab: []
|
||||
]},
|
||||
{Oban.Pro.Plugins.DynamicQueues,
|
||||
queues: [
|
||||
triggered_process: 10,
|
||||
triggered_process_2: 10,
|
||||
triggered_say_hello: 10
|
||||
]}
|
||||
queues: [
|
||||
triggered_process: 10,
|
||||
triggered_process_2: 10,
|
||||
triggered_say_hello: 10
|
||||
]}
|
||||
],
|
||||
queues: false
|
||||
])
|
||||
)
|
||||
|
||||
assert [
|
||||
engine: Oban.Pro.Engines.Smart,
|
||||
plugins: [
|
||||
{Oban.Pro.Plugins.DynamicCron, [
|
||||
engine: Oban.Pro.Engines.Smart,
|
||||
plugins: [
|
||||
{Oban.Pro.Plugins.DynamicCron,
|
||||
[
|
||||
timezone: "Europe/Rome",
|
||||
sync_mode: :automatic,
|
||||
crontab: [
|
||||
{"0 0 1 1 *", AshOban.Test.Triggered.AshOban.ActionWorker.SayHello, []},
|
||||
{"* * * * *", AshOban.Test.Triggered.AshOban.Scheduler.Process, []}
|
||||
{"0 0 1 1 *", AshOban.Test.Triggered.AshOban.ActionWorker.SayHello,
|
||||
[paused: false]},
|
||||
{"* * * * *", AshOban.Test.Triggered.AshOban.Scheduler.Process,
|
||||
[paused: false]}
|
||||
]
|
||||
]},
|
||||
{Oban.Pro.Plugins.DynamicQueues,
|
||||
{Oban.Pro.Plugins.DynamicQueues,
|
||||
queues: [
|
||||
triggered_process: 10,
|
||||
triggered_process_2: 10,
|
||||
triggered_say_hello: 10
|
||||
]}
|
||||
],
|
||||
queues: false
|
||||
] = config
|
||||
end
|
||||
],
|
||||
queues: false
|
||||
] = config
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue