Source code for clash_royale.models.tournament
from __future__ import annotations
from pydantic import Field
from typing_extensions import Literal
from clash_royale.models.common import PlayerClan
from .base import CRBaseModel, ISO8601DateTime
[docs]
class TournamentMember(CRBaseModel):
"""Represents a member in a tournament."""
tag: str
name: str
score: int
rank: int
clan: PlayerClan | None = None
[docs]
class TournamentHeader(CRBaseModel):
"""Represents a Clash Royale tournament header."""
tag: str
type: Literal["open", "passwordProtected", "unknown"]
status: Literal["inPreparation", "inProgress", "ended", "unknown"]
creator_tag: str = Field(alias="creatorTag")
name: str
description: str | None = None
capacity: int
max_capacity: int = Field(alias="maxCapacity")
preparation_duration: int = Field(alias="preparationDuration")
duration: int
created_time: ISO8601DateTime = Field(alias="createdTime")
first_place_card_prize: int = Field(alias="firstPlaceCardPrize")
level_cap: int = Field(alias="levelCap")
[docs]
class Tournament(TournamentHeader):
"""Represents a Clash Royale tournament."""
started_time: ISO8601DateTime | None = Field(default=None, alias="startedTime")
ended_time: ISO8601DateTime | None = Field(default=None, alias="endedTime")
members_list: list[TournamentMember] = Field(
default_factory=list, alias="membersList"
)