Add autodelete timer to the database

This commit is contained in:
Alexander Krotov
2020-01-01 23:10:47 +01:00
parent 26b0c43cc4
commit 51133ce0d6
2 changed files with 38 additions and 1 deletions

View File

@@ -663,6 +663,7 @@ impl Chat {
profile_image: self.get_profile_image(context).unwrap_or_else(PathBuf::new),
draft,
is_muted: self.is_muted(),
autodelete_timer: get_autodelete_timer(context, self.id),
})
}
@@ -1022,6 +1023,8 @@ pub struct ChatInfo {
// - [ ] lastUpdated,
// - [ ] freshMessageCounter,
// - [ ] email
/// Automatic message deletion timer.
pub autodelete_timer: u32,
}
/// Create a chat from a message ID.
@@ -2567,6 +2570,31 @@ pub(crate) fn add_info_msg(context: &Context, chat_id: ChatId, text: impl AsRef<
});
}
/// Get autodelete timer value in seconds.
pub fn get_autodelete_timer(context: &Context, chat_id: ChatId) -> u32 {
context
.sql
.query_get_value(
context,
"SELECT autodelete_timer FROM chats WHERE id=?;",
params![chat_id],
)
.unwrap_or_default()
}
/// Set autodelete timer value in seconds.
///
/// If timer value is 0, disable autodelete timer.
pub fn set_autodelete_timer(context: &Context, chat_id: ChatId, timer: u32) -> Result<(), Error> {
context.sql.execute(
"UPDATE chats
SET autodelete_timer=?
WHERE id=?;",
params![timer, chat_id],
)?;
Ok(())
}
#[cfg(test)]
mod tests {
use super::*;
@@ -2597,7 +2625,8 @@ mod tests {
"color": 15895624,
"profile_image": "",
"draft": "",
"is_muted": false
"is_muted": false,
"autodelete_timer": 0
}
"#;

View File

@@ -902,6 +902,14 @@ fn open(
sql.execute("UPDATE chats SET grpid='' WHERE type=100", NO_PARAMS)?;
sql.set_raw_config_int(context, "dbversion", 63)?;
}
if dbversion < 64 {
info!(context, "[migration] v64");
sql.execute(
"ALTER TABLE chats ADD COLUMN autodelete_timer INTEGER DEFAULT 0;",
NO_PARAMS,
)?;
sql.set_raw_config_int(context, "dbversion", 64)?;
}
// (2) updates that require high-level objects
// (the structure is complete now and all objects are usable)