defmodule ExCart.Cart.Supervisor do
use DynamicSupervisor
@name __MODULE__
def init(:ok) do
DynamicSupervisor.init(strategy: :one_for_one)
end
def init(args) do
DynamicSupervisor.init(
strategy: :one_for_one,
extra_arguments: args
)
end
def start_link(_args) do
DynamicSupervisor.start_link(__MODULE__, :ok, name: @name)
end
def start_cart do
child_spec = %{
id: ExCart.Server,
start: {ExCart.Server, :start_link, []},
restart: :transient
}
DynamicSupervisor.start_child(__MODULE__, child_spec)
end
def remove_cart(pid) do
DynamicSupervisor.terminate_child(__MODULE__, pid)
end
end