Current section

Files

Jump to
arke lib arke boundary arke_manager.ex
Raw

lib/arke/boundary/arke_manager.ex

defmodule Arke.Boundary.ArkeManager do
@moduledoc """
This module manage the gen servers for the element specified in `Arke.Core.Arke`
""" && false
use Arke.UnitManager
set_registry_name(:arke_registry)
set_supervisor_name(:arke_supervisor)
def before_create(%{id: id, data: data, metadata: unit_metadata} = unit, project) do
unit = check_module(unit)
new_parameters =
Enum.reduce(data.parameters, [], fn %{id: parameter_id, metadata: parameter_metadata} = _,
new_parameters ->
case init_parameter(project, parameter_id, parameter_metadata) do
{:error, msg} -> %{id: parameter_id, metadata: parameter_metadata}
parameter -> [parameter | new_parameters]
end
end)
{Unit.update(unit, parameters: new_parameters), project}
end
defp check_module(%{__module__: nil} = unit),
do: Unit.update(unit, __module__: Arke.System.Arke)
defp check_module(unit), do: unit
defp link_init(project, :parameters, child_id, metadata) do
case init_parameter(project, child_id, metadata) do
{:error, msg} -> %{id: child_id, metadata: metadata}
p -> p
end
end
defp init_parameter(project, id, metadata) do
case Arke.Boundary.ParameterManager.get(id, project) do
{:error, msg} ->
IO.inspect({id, msg})
{:error, msg}
parameter ->
parameter = Unit.update(parameter, metadata)
end
end
end