Skip to main content

lib/cnpja/shared/agent.ex

defmodule Cnpja.Agent do
  @moduledoc "Legal representative of a company member."

  defstruct [:person, :role]

  @type t :: %__MODULE__{
          person: Cnpja.PersonRef.t() | nil,
          role: Cnpja.Label.t() | nil
        }

  @spec from_map(map()) :: t()
  def from_map(map) do
    %__MODULE__{
      person: map["person"] && Cnpja.PersonRef.from_map(map["person"]),
      role: map["role"] && Cnpja.Label.from_map(map["role"])
    }
  end

  @spec from_map_nullable(map() | nil) :: t() | nil
  def from_map_nullable(nil), do: nil
  def from_map_nullable(map), do: from_map(map)
end