lib/windog/structs/player_record.ex

defmodule Windog.Structs.PlayerRecord do
  alias Windog.Structs

  @keys [
    :comment,
    :race_point,
    :sb,
    :percent,
    :leg_type,
    :style,
    :ex,
    # 1着+2着+3着+着外
    :countable
  ]

  @enforce_keys @keys

  defstruct @keys

  def validate(%{
        comment: comment,
        style: style,
        race_point: race_point,
        countable: countable,
        sb: %Structs.PlayerRecordSB{} = sb,
        percent: %Structs.PlayerRecordPercent{} = percent,
        leg_type: %Structs.PlayerRecordLegType{} = leg_type,
        ex: %Structs.PlayerRecordEx{} = ex
      })
      when is_number(race_point) and is_binary(style) do
    %__MODULE__{
      countable: countable,
      comment: comment,
      style: style,
      race_point: race_point,
      sb: sb,
      percent: percent,
      leg_type: leg_type,
      ex: ex
    }
  end
end