# `GameServer.Tournaments.Match`
[🔗](https://github.com/appsinacup/game_server/blob/v1.0.26/lib/game_server/tournaments/match.ex#L1)

Tournament match struct from GameServer.

This is a stub module for SDK type definitions. The actual struct
is provided by GameServer at runtime.

A match is a pairing plus a verdict: two entries that must produce a winner
by `deadline_at`. How it is played is up to the game — the server only needs
`GameServer.Tournaments.resolve_match/2` called before the deadline.

Payloads passed to `tournament_match_ready/1` and `tournament_match_expired/1`
have `tournament`, `a_entry` and `b_entry` preloaded.

## Fields

- `id` - Match ID (UUIDv7 string)
- `tournament_id` / `tournament` - Owning tournament
- `bracket_index` - Which bracket this match belongs to
- `round` - 1-based round number
- `slot` - Position within the round
- `a_entry_id` / `a_entry` - First side (nil until its feeder resolves)
- `b_entry_id` / `b_entry` - Second side (nil until its feeder resolves)
- `winner_entry_id` - Set on resolution; nil with `resolved_at` set means a double forfeit
- `ready_at` - When the match became playable
- `expired_at` - When the deadline passed with the match still open
- `resolved_at` - When the verdict was recorded
- `deadline_at` - End of the round window
- `metadata` - Game scratch space, e.g. runs or a lobby id (map)
- `inserted_at` - Creation timestamp
- `updated_at` - Last update timestamp

# `t`

```elixir
@type t() :: %GameServer.Tournaments.Match{
  a_entry: GameServer.Tournaments.Entry.t() | nil,
  a_entry_id: String.t() | nil,
  b_entry: GameServer.Tournaments.Entry.t() | nil,
  b_entry_id: String.t() | nil,
  bracket_index: integer(),
  deadline_at: DateTime.t(),
  expired_at: DateTime.t() | nil,
  id: String.t(),
  inserted_at: DateTime.t(),
  metadata: map(),
  ready_at: DateTime.t() | nil,
  resolved_at: DateTime.t() | nil,
  round: integer(),
  slot: integer(),
  tournament: GameServer.Tournaments.Tournament.t() | nil,
  tournament_id: String.t(),
  updated_at: DateTime.t(),
  winner_entry_id: String.t() | nil
}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
