diff options
Diffstat (limited to 'src/database.rs')
-rw-r--r-- | src/database.rs | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/database.rs b/src/database.rs index 74d9c1a..48c6b12 100644 --- a/src/database.rs +++ b/src/database.rs @@ -6,6 +6,7 @@ use super::*; pub struct Database { db: Connection, + newest_message_id: Option<UID>, } impl Database { pub fn get_message(&self, id: usize) -> Option<Message> { @@ -40,11 +41,18 @@ impl Database { pub fn get_next_message_id(&self) -> UID { UID::from(self.get_table_length("messages")) } - pub fn get_message_newest_id(&self) -> Option<UID> { - match self.get_table_length("messages") { - 0 => None, - n => Some(UID::new(n - 1)), + pub fn get_message_newest_id(&mut self) -> Option<UID> { + match self.newest_message_id { + None => { + self.newest_message_id = match self.get_table_length("messages") { + 0 => None, + n => Some(UID::new(n - 1)), + } + }, + Some(_) => () } + + self.newest_message_id } fn message_from_row(&self, row: sqlite::Row) -> Message{ @@ -137,6 +145,8 @@ impl Database { } } + self.newest_message_id = Some(msg.id()); + Ok(msg.id()) } @@ -379,6 +389,7 @@ impl Database { Database { db: db, + newest_message_id: None } } }
\ No newline at end of file |