aboutsummaryrefslogtreecommitdiff
path: root/src/database.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/database.rs')
-rw-r--r--src/database.rs19
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