lib/winticket_race_parser/structs/race.ex

defmodule WinticketRaceParser.Structs.Race do
  @keys [
    :id,
    :r,
    :day_index,
    :day,
    :start_at,
    :type,
    :class,
    :distance,
    :lap
  ]

  @enforce_keys @keys

  defstruct @keys

  def validate(%{
        id: id,
        r: r,
        day_index: day_index,
        day: day,
        start_at: start_at,
        type: type,
        class: class,
        distance: distance,
        lap: lap
      })
      when is_binary(id) and is_integer(r) and is_integer(day) and is_binary(type) and
             is_binary(class) and is_integer(distance) and is_integer(lap) and
             is_integer(day_index) and is_integer(start_at) do
    %__MODULE__{
      id: id,
      r: r,
      day_index: day_index,
      day: day,
      start_at: start_at,
      type: type,
      class: class,
      distance: distance,
      lap: lap
    }
  end
end