Files
localiserd/lib/localiser/localisation/floor_supervisor.ex
T
2026-04-16 15:46:00 +02:00

33 lines
728 B
Elixir

defmodule Localiser.Localisation.Floor.Supervisor do
use DynamicSupervisor
alias Localiser.Domain.Floors
alias Localiser.Localisation.Floor.Server
def start_link(_args) do
case DynamicSupervisor.start_link(__MODULE__, :ok, name: __MODULE__) do
{:ok, pid} ->
Floors.list_floors() |> Enum.each(&start_floor_server/1)
{:ok, pid}
error ->
error
end
end
@impl true
def init(:ok) do
DynamicSupervisor.init(strategy: :one_for_one)
end
def start_floor_server(floor) do
child_spec = %{
id: {Server, floor.id},
start: {Server, :start_link, [floor]},
restart: :transient
}
DynamicSupervisor.start_child(__MODULE__, child_spec)
end
end