Skip to main content

lib/uof/schemas/api/sports/basic_event.ex

defmodule UOF.Schemas.API.Sports.BasicEvent do
  @moduledoc false
  use Ecto.Schema

  import Ecto.Changeset

  alias UOF.Schemas.API.Sports.EventPlayer

  @primary_key false
  embedded_schema do
    field(:id, :integer)
    field(:type, :string)
    field(:time, :utc_datetime)
    field(:period_name, :string)
    field(:match_time, :integer)
    field(:match_clock, :string)
    field(:team, :string)
    field(:x, :integer)
    field(:y, :integer)
    field(:home_score, :string)
    field(:away_score, :string)
    field(:period, :string)
    field(:stoppage_time, :string)
    field(:value, :string)
    field(:points, :string)
    field(:match_status_code, :integer)
    embeds_one(:goal_scorer, EventPlayer)
    embeds_one(:player, EventPlayer)
    embeds_many(:assist, UOF.Schemas.API.Sports.EventPlayerAssist)
  end

  def changeset(struct, params) do
    struct
    |> cast(params, [
      :id,
      :type,
      :time,
      :period_name,
      :match_time,
      :match_clock,
      :team,
      :x,
      :y,
      :home_score,
      :away_score,
      :period,
      :stoppage_time,
      :value,
      :points,
      :match_status_code
    ])
    |> cast_embed(:goal_scorer)
    |> cast_embed(:player)
    |> cast_embed(:assist)
  end
end