diff --git a/src/chat.rs b/src/chat.rs index 2d6a7317d..848985bd2 100644 --- a/src/chat.rs +++ b/src/chat.rs @@ -31,7 +31,6 @@ use crate::ephemeral::{delete_expired_messages, schedule_ephemeral_task, Timer a use crate::events::EventType; use crate::html::new_html_mimepart; use crate::job::{self, Action}; -use crate::location; use crate::message::{self, Message, MessageState, MsgId, Viewtype}; use crate::mimefactory::MimeFactory; use crate::mimeparser::SystemMessage; @@ -41,6 +40,7 @@ use crate::scheduler::InterruptInfo; use crate::smtp::send_msg_to_smtp; use crate::stock_str; use crate::webxdc::WEBXDC_SUFFIX; +use crate::{location, sql}; /// An chat item, such as a message or a marker. #[derive(Debug, Copy, Clone)] @@ -3103,7 +3103,7 @@ pub async fn forward_msgs(context: &Context, msg_ids: &[MsgId], chat_id: ChatId) .query_map( format!( "SELECT id FROM msgs WHERE id IN({}) ORDER BY timestamp,id", - msg_ids.iter().map(|_| "?").collect::>().join(",") + sql::repeat_vars(msg_ids.len())? ), rusqlite::params_from_iter(msg_ids), |row| row.get::<_, MsgId>(0), diff --git a/src/imap.rs b/src/imap.rs index 4dbca3eae..7a541ee74 100644 --- a/src/imap.rs +++ b/src/imap.rs @@ -41,6 +41,7 @@ use crate::param::Params; use crate::provider::Socket; use crate::scheduler::connectivity::ConnectivityStore; use crate::scheduler::InterruptInfo; +use crate::sql; use crate::stock_str; mod client; @@ -832,7 +833,7 @@ impl Imap { .execute( format!( "DELETE FROM imap WHERE id IN ({})", - row_ids.iter().map(|_| "?").collect::>().join(",") + sql::repeat_vars(row_ids.len())? ), rusqlite::params_from_iter(row_ids), ) @@ -869,7 +870,7 @@ impl Imap { .execute( format!( "DELETE FROM imap WHERE id IN ({})", - row_ids.iter().map(|_| "?").collect::>().join(",") + sql::repeat_vars(row_ids.len())? ), rusqlite::params_from_iter(row_ids), ) @@ -911,7 +912,7 @@ impl Imap { .execute( format!( "UPDATE imap SET target='' WHERE id IN ({})", - row_ids.iter().map(|_| "?").collect::>().join(",") + sql::repeat_vars(row_ids.len())? ), rusqlite::params_from_iter(row_ids), ) diff --git a/src/job.rs b/src/job.rs index 9fd1216a4..b345d26e0 100644 --- a/src/job.rs +++ b/src/job.rs @@ -472,9 +472,12 @@ pub async fn kill_action(context: &Context, action: Action) -> Result<()> { /// Remove jobs with specified IDs. async fn kill_ids(context: &Context, job_ids: &[u32]) -> Result<()> { + if job_ids.is_empty() { + return Ok(()); + } let q = format!( "DELETE FROM jobs WHERE id IN({})", - job_ids.iter().map(|_| "?").collect::>().join(",") + sql::repeat_vars(job_ids.len())? ); context .sql