use serde::{Deserialize, Serialize};
#[derive(Default, Clone, Debug, Serialize)]
pub struct GetQuery {
pub days: u32,
}
pub type GetRequest = crate::model::Request<GetQuery>;
impl GetRequest {
pub fn new(username: &str, days: Option<u32>) -> Self {
let path = format!("/api/storm/dashboard/{}", username);
let query = days.map(|x| GetQuery { days: x });
Self::get(path, query, None)
}
}
impl<S: AsRef<str>> From<S> for GetRequest {
fn from(s: S) -> Self {
Self::new(s.as_ref(), None)
}
}
pub type Dashboard = StormDashboard;
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct StormDashboard {
high: High,
days: Vec<Day>,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct High {
#[serde(rename = "allTime")]
all_time: i64,
day: i64,
month: i64,
week: i64,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct Day {
#[serde(rename = "_id")]
id: String,
combo: i64,
errors: i64,
highest: i64,
moves: i64,
runs: i64,
score: i64,
time: i64,
}