lib/winticket_race_parser/structs/player.ex

defmodule WinticketRaceParser.Structs.Player do
  alias WinticketRaceParser.Structs

  @keys [
    :number,
    :absent,
    :player_id,
    :player,
    :record,
    :current_cup,
    :previous_cup
  ]

  @enforce_keys @keys

  defstruct @keys

  def validate(%{
        number: number,
        absent: absent,
        player_id: player_id,
        player: %Structs.PlayerDetail{} = player,
        record: %Structs.PlayerRecord{} = record,
        current_cup: current_cup,
        previous_cup: previous_cup
      })
      when is_binary(number) and is_binary(player_id) and is_boolean(absent)
      when is_list(current_cup) and is_list(previous_cup) do
    %__MODULE__{
      number: number,
      absent: absent,
      player_id: player_id,
      player: player,
      record: record,
      current_cup: current_cup,
      previous_cup: previous_cup
    }
  end
end