lib/circlex/struct/transfer.ex

defmodule Circlex.Struct.Transfer do
  import Circlex.Struct.Util

  defstruct [:id, :source, :destination, :amount, :transaction_hash, :status, :create_date]

  alias Circlex.Struct.{Amount, SourceDest}

  def deserialize(transfer) do
    %__MODULE__{
      id: fetch(transfer, :id),
      source: SourceDest.deserialize(fetch(transfer, :source)),
      destination: SourceDest.deserialize(fetch(transfer, :destination)),
      amount: Amount.deserialize(fetch(transfer, :amount)),
      transaction_hash: fetch(transfer, :transactionHash),
      status: fetch(transfer, :status),
      create_date: fetch(transfer, :createDate)
    }
  end

  def serialize(transfer) do
    %{
      id: transfer.id,
      source: SourceDest.serialize(transfer.source),
      destination: SourceDest.serialize(transfer.destination),
      amount: Amount.serialize(transfer.amount),
      transactionHash: transfer.transaction_hash,
      status: transfer.status,
      createDate: transfer.create_date
    }
  end
end