defmodule Instruments.BankAccount do
alias Customers.Customer
alias Instruments.Bank
@derive Jason.Encoder
@type t() :: %__MODULE__{
account_number: String.t(),
bank: Bank.t(),
bank_code: String.t(),
customer: Customer.t(),
fingerprint: String.t(),
iban: String.t(),
id: String.t(),
swift_bic: String.t(),
type: String.t()
}
defstruct [
:account_number,
:bank,
:bank_code,
:customer,
:fingerprint,
:iban,
:id,
:swift_bic,
:type
]
def build(params) when is_map(params) do
%__MODULE__{
account_number: params[:account_number],
bank: Bank.build(params[:bank]),
bank_code: params[:bank_code],
customer: Customer.build(params[:customer]),
fingerprint: params[:fingerprint],
iban: params[:iban],
id: params[:id],
swift_bic: params[:swift_bic],
type: params[:type]
}
end
end