722 B · text History 4eee00d
defmodule RoomZeus.ScribusSupervisor do
  use DynamicSupervisor

  def start_link(init_arg) do
    DynamicSupervisor.start_link(__MODULE__, init_arg, name: __MODULE__)
  end

  def start_child(instance_id) do
    spec = {RoomScribus.Timer, [name: instance_id]}
    DynamicSupervisor.start_child(__MODULE__, spec)
  end

  @impl true
  def init(_init_arg) do
    Periodic.start_link(
      every: :timer.seconds(10),
      run: &do_children/0,
      initial_delay: 1000
    )

    DynamicSupervisor.init(strategy: :one_for_one)
  end

  defp do_children do
    RoomSanctum.Configuration.list_cfg_scribus()
    |> Enum.map(fn x ->
      RoomZeus.ScribusSupervisor.start_child(x.id |> Integer.to_string())
    end)
  end
end