aboutsummaryrefslogtreecommitdiff
path: root/server/src/routes/progress.rs
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/routes/progress.rs')
-rw-r--r--server/src/routes/progress.rs28
1 files changed, 28 insertions, 0 deletions
diff --git a/server/src/routes/progress.rs b/server/src/routes/progress.rs
new file mode 100644
index 0000000..170ed97
--- /dev/null
+++ b/server/src/routes/progress.rs
@@ -0,0 +1,28 @@
+use std::collections::HashMap;
+
+use super::ui::{account::session::Session, error::MyResult};
+use jellybase::database::Database;
+use rocket::{post, State};
+
+#[post("/n/<id>/progress?<t>")]
+pub async fn r_player_progress(
+ session: Session,
+ db: &State<Database>,
+ id: &str,
+ t: Option<f64>,
+) -> MyResult<()> {
+ db.user_progess.fetch_and_update(&session.user.name, |p| {
+ let mut m = p.unwrap_or_else(|| HashMap::new());
+ if let Some(t) = t {
+ m.insert(id.to_string(), t);
+ } else {
+ m.remove(&id.to_string());
+ }
+ if m.is_empty() {
+ None
+ } else {
+ Some(m)
+ }
+ })?;
+ Ok(())
+}