diff options
Diffstat (limited to 'src/database.rs')
-rw-r--r-- | src/database.rs | 37 |
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 { |