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