use serde::Deserialize;
use crate::{
types::{EloChange, RankedAndCasual, TwoUserData},
user::UserProfile,
};
pub mod requests;
#[cfg(test)]
mod tests;
#[derive(Debug, Clone, PartialEq, Eq, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct VersusOutcome {
#[serde(flatten)]
wins: TwoUserData<u32>,
total: u32,
}
impl VersusOutcome {
pub fn wins(&self) -> &TwoUserData<u32> {
&self.wins
}
pub fn total(&self) -> u32 {
self.total
}
}
#[derive(Debug, Clone, PartialEq, Eq, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct VersusInfo {
players: (UserProfile, UserProfile),
results: RankedAndCasual<VersusOutcome>,
changes: TwoUserData<EloChange>,
}
impl VersusInfo {
pub fn players(&self) -> &(UserProfile, UserProfile) {
&self.players
}
pub fn results(&self) -> &RankedAndCasual<VersusOutcome> {
&self.results
}
pub fn changes(&self) -> &TwoUserData<EloChange> {
&self.changes
}
}