diff --git a/src/tera/ergo.rs b/src/tera/ergo.rs index a029a7b..4e93c4e 100644 --- a/src/tera/ergo.rs +++ b/src/tera/ergo.rs @@ -209,10 +209,12 @@ async fn new_thirty( if let Err(e) = data.proof.move_copy_to(file_path).await { eprintln!("Failed to persist file: {:?}", e); } + + let result = data.result.trim_start_matches(|c| c == '0' || c == ' '); sqlx::query!( "UPDATE user SET dirty_thirty = ? where id = ?", - data.result, + result, data.user ) .execute(db.inner()) @@ -231,6 +233,32 @@ async fn new_thirty( Flash::success(Redirect::to("/ergo"), "Erfolgreich eingetragen") } +fn format_time(input: &str) -> String { + let mut parts: Vec<&str> = input.split(':').collect(); + + // If there's only seconds (e.g., "24.2"), treat it as "00:00:24.2" + if parts.len() == 1 { + parts.insert(0, "0"); // Add "0" for hours + parts.insert(0, "0"); // Add "0" for minutes + } + + // If there are two parts (e.g., "4:24.2"), treat it as "00:04:24.2" + if parts.len() == 2 { + parts.insert(0, "0"); // Add "0" for hours + } + + // Now parts should have [hours, minutes, seconds] + let hours = if parts[0].len() == 1 { format!("0{}", parts[0]) } else { parts[0].to_string() }; + let minutes = if parts[1].len() == 1 { format!("0{}", parts[1]) } else { parts[1].to_string() }; + let seconds = parts[2]; + + // Split seconds into whole and fractional parts + let (sec_int, sec_frac) = seconds.split_once('.').unwrap_or((seconds, "0")); + + // Format the time as "hh:mm:ss.s" + format!("{}:{}:{}.{:1}", hours, minutes, sec_int, sec_frac.chars().next().unwrap_or('0')) +} + #[post("/dozen", data = "", format = "multipart/form-data")] async fn new_dozen( db: &State, @@ -253,10 +281,12 @@ async fn new_dozen( if let Err(e) = data.proof.move_copy_to(file_path).await { eprintln!("Failed to persist file: {:?}", e); } + let result = data.result.trim_start_matches(|c| c == '0' || c == ' '); + let result = format_time(result); sqlx::query!( "UPDATE user SET dirty_dozen = ? where id = ?", - data.result, + result, data.user ) .execute(db.inner())