Skip to main content

lib/cnpja/shared/person_membership_company.ex

defmodule Cnpja.PersonMembershipCompany do
  @moduledoc "Lightweight company reference inside a person membership record."

  @enforce_keys [:id, :name]
  defstruct [:id, :name, :equity, :nature, :size, :jurisdiction]

  @type t :: %__MODULE__{
          id: integer(),
          name: String.t(),
          equity: number() | nil,
          nature: Cnpja.Label.t() | nil,
          size: Cnpja.SizeLabel.t() | nil,
          jurisdiction: String.t() | nil
        }

  @doc false
  @spec from_map(map()) :: t()
  def from_map(map) do
    %__MODULE__{
      id: map["id"],
      name: map["name"],
      equity: map["equity"],
      nature: Cnpja.Label.from_map_nullable(map["nature"]),
      size: Cnpja.SizeLabel.from_map_nullable(map["size"]),
      jurisdiction: map["jurisdiction"]
    }
  end
end