lib/winticket_race_parser/structs/result_item.ex

defmodule WinticketRaceParser.Structs.ResultItem do
  @keys [
    :number,
    :player_id,
    :has_accident,
    :accident,
    :factor,
    :agari_time,
    :standing,
    :back
  ]

  @enforce_keys @keys

  defstruct @keys

  def validate(%{
        number: number,
        player_id: player_id,
        has_accident: has_accident,
        accident: accident,
        factor: factor,
        agari_time: agari_time,
        standing: standing,
        back: back
      })
      when is_binary(number) and is_binary(player_id) and is_boolean(has_accident) and
             (is_binary(accident) or is_nil(accident)) and is_float(agari_time) and
             is_boolean(standing) and is_boolean(back) do
    %__MODULE__{
      number: number,
      player_id: player_id,
      has_accident: has_accident,
      accident: accident,
      factor: factor,
      agari_time: agari_time,
      standing: standing,
      back: back
    }
  end
end