lib/tai/orders/order_transition_supervisor.ex
defmodule Tai.Orders.OrderTransitionSupervisor do
use Supervisor
alias Tai.Orders.OrderTransitionWorker
@spec start_link(pos_integer) :: Supervisor.on_start()
def start_link(worker_count) do
Supervisor.start_link(__MODULE__, worker_count, name: __MODULE__)
end
@impl true
def init(worker_count) do
children =
0
|> Range.new(worker_count - 1)
|> Enum.map(fn idx ->
Supervisor.child_spec(
{OrderTransitionWorker, idx},
id: :"#{OrderTransitionWorker}_#{idx}"
)
end)
children
|> Supervisor.init(strategy: :one_for_one)
end
end