about summary refs log tree commit diff
path: root/src/database.rs
diff options
context:
space:
mode:
authorgennyble <gen@nyble.dev>2025-08-14 23:17:13 -0500
committergennyble <gen@nyble.dev>2025-08-14 23:17:13 -0500
commitd997d8a3d640cf36b0e705db249e1a8865f0b54f (patch)
treee1478fd88f515755fa0fd1db98ff4f7c31d4b815 /src/database.rs
parent2e56bb762c4a521efd57d1c51796e9f096a7cfe0 (diff)
downloadleaberblord-d997d8a3d640cf36b0e705db249e1a8865f0b54f.tar.gz
leaberblord-d997d8a3d640cf36b0e705db249e1a8865f0b54f.zip
slightly scuffed revise command
Diffstat (limited to 'src/database.rs')
-rw-r--r--src/database.rs37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/database.rs b/src/database.rs
index 2f1e24d..f496e65 100644
--- a/src/database.rs
+++ b/src/database.rs
@@ -1,6 +1,7 @@
 use std::{path::Path, sync::Mutex};
 
 use rusqlite::{Connection, OptionalExtension, params};
+use time::{OffsetDateTime, format_description};
 
 #[derive(Debug)]
 pub struct Database {
@@ -177,6 +178,42 @@ impl Database {
 
 		Ok(())
 	}
+
+	pub fn revise_last_history_date(
+		&self,
+		guild_id: u64,
+		user: u64,
+		points: i64,
+		date: OffsetDateTime,
+	) -> Result<(), Error> {
+		let lb = self.leaderboard_id(guild_id)?;
+		let conn = self.conn.lock().unwrap();
+
+		let sql = lb.sql(
+			"SELECT id, user_id, timestamp, points FROM leaderboard_history_LBID \
+					WHERE user_id=?1 AND points=?2 \
+					ORDER BY timestamp DESC LIMIT 1",
+		);
+
+		let hist_id: i64 = conn
+			.query_row(&sql, params![user, points], |row| row.get(0))
+			.unwrap();
+
+		println!("hist_id = {hist_id}");
+
+		let update_sql = lb.sql("UPDATE leaderboard_history_LBID SET timestamp = ?1 WHERE id = ?2");
+
+		let datetime_fmt =
+			format_description::parse("[year]-[month]-[day] [hour]:[minute]:[second]").unwrap();
+
+		conn.execute(
+			&update_sql,
+			params![date.format(&datetime_fmt).unwrap(), hist_id],
+		)
+		.unwrap();
+
+		Ok(())
+	}
 }
 
 pub enum PermissionSetting {