#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct CompletedGame {
#[serde(rename = "white")]
pub white: crate::models::PlayerResult,
#[serde(rename = "black")]
pub black: crate::models::PlayerResult,
#[serde(rename = "url")]
pub url: String,
#[serde(rename = "fen")]
pub fen: String,
#[serde(rename = "pgn")]
pub pgn: String,
#[serde(rename = "start_time", skip_serializing_if = "Option::is_none")]
#[serde(with = "chrono::serde::ts_seconds_option")]
pub start_time: Option<chrono::DateTime<chrono::Utc>>,
#[serde(rename = "end_time")]
pub end_time: i32,
#[serde(rename = "rated")]
pub rated: bool,
#[serde(rename = "time_control")]
pub time_control: String,
#[serde(rename = "time_class")]
pub time_class: TimeClass,
#[serde(rename = "rules")]
pub rules: Rules,
#[serde(rename = "eco", skip_serializing_if = "Option::is_none")]
pub eco: Option<String>,
#[serde(rename = "tournament", skip_serializing_if = "Option::is_none")]
pub tournament: Option<String>,
#[serde(rename = "match", skip_serializing_if = "Option::is_none")]
pub _match: Option<String>,
}
impl CompletedGame {
pub fn new(white: crate::models::PlayerResult, black: crate::models::PlayerResult, url: String, fen: String, pgn: String, end_time: i32, rated: bool, time_control: String, time_class: TimeClass, rules: Rules) -> CompletedGame {
CompletedGame {
white,
black,
url,
fen,
pgn,
start_time: None,
end_time,
rated,
time_control,
time_class,
rules,
eco: None,
tournament: None,
_match: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum TimeClass {
#[serde(rename = "daily")]
Daily,
#[serde(rename = "rapid")]
Rapid,
#[serde(rename = "blitz")]
Blitz,
#[serde(rename = "bullet")]
Bullet,
}
impl std::fmt::Display for TimeClass {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
TimeClass::Daily => write!(f, "daily"),
TimeClass::Rapid => write!(f, "rapid"),
TimeClass::Blitz => write!(f, "blitz"),
TimeClass::Bullet => write!(f, "bullet"),
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Rules {
#[serde(rename = "chess")]
Chess,
#[serde(rename = "chess960")]
Chess960,
#[serde(rename = "bughouse")]
Bughouse,
#[serde(rename = "kingofthehill")]
Kingofthehill,
#[serde(rename = "threecheck")]
Threecheck,
#[serde(rename = "crazyhouse")]
Crazyhouse,
}
impl std::fmt::Display for Rules {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Rules::Chess => write!(f, "chess"),
Rules::Chess960 => write!(f, "chess960"),
Rules::Bughouse => write!(f, "bughouse"),
Rules::Kingofthehill => write!(f, "kingofthehill"),
Rules::Threecheck => write!(f, "threecheck"),
Rules::Crazyhouse => write!(f, "crazyhouse"),
}
}
}