lib/workbench/balance_snapshots/events/error.ex

defmodule Workbench.BalanceSnapshots.Events.Error do
  alias __MODULE__

  @type t :: %Error{
          reason: term
        }

  @enforce_keys ~w(reason)a
  defstruct ~w(reason)a
end

defimpl TaiEvents.LogEvent, for: Workbench.BalanceSnapshots.Events.Error do
  def to_data(event) do
    keys =
      event
      |> Map.keys()
      |> Enum.filter(&(&1 != :__struct__))

    event
    |> Map.take(keys)
    |> Map.put(:reason, event.reason |> inspect)
  end
end