defmodule Circlex.Emulator.State.Util do alias Circlex.Struct.{Payout, Transfer} defp test_filter(payout = %Payout{}, {:source_wallet_id, source_wallet_id}) do payout.source_wallet_id == source_wallet_id end defp test_filter(transfer = %Transfer{}, {:transfer_source, {type, id}}) do transfer.source.type == type and transfer.source.id == id end def apply_filters(vals, filters) do Enum.filter(vals, fn val -> Enum.all?(filters, fn filter -> test_filter(val, filter) end) end) end def fetch(m, key) do case Map.get(m, key) do nil -> Map.get(m, to_string(key)) els -> els end end def merchant_id(), do: Circlex.Emulator.merchant_id() end