defmodule Instruments.Bank do
import Utilities, only: [atomize_keys: 1]
alias Customers.BillingAddress
@derive Jason.Encoder
@type address :: %{
address_line1: String.t(),
address_line2: String.t(),
city: String.t(),
country: <<_::2>>,
state: <<_::2>>,
zip: <<_::50>>
}
@type t() :: %__MODULE__{
address: address(),
branch: String.t(),
name: String.t()
}
defstruct [
:address,
:branch,
:name
]
def build(raw_params) when is_map(raw_params) do
params = atomize_keys(raw_params)
%__MODULE__{
address: BillingAddress.build(params[:address]),
branch: params[:branch],
name: params[:name]
}
end
def build(_), do: nil
end