From 6646c765b7d853cc7fe0afe9639edca972688b36 Mon Sep 17 00:00:00 2001 From: Simon Laux Date: Wed, 14 Jan 2026 18:15:04 +0100 Subject: [PATCH] refactor: don't use `concat!` in sql statements --- src/context.rs | 28 ++++++++--------- src/message.rs | 76 ++++++++++++++++++++++------------------------- src/mimeparser.rs | 22 +++++++------- 3 files changed, 59 insertions(+), 67 deletions(-) diff --git a/src/context.rs b/src/context.rs index 653c7dcbd6..5461dc8245 100644 --- a/src/context.rs +++ b/src/context.rs @@ -1120,21 +1120,19 @@ impl Context { let list = self .sql .query_map_vec( - concat!( - "SELECT m.id", - " FROM msgs m", - " LEFT JOIN contacts ct", - " ON m.from_id=ct.id", - " LEFT JOIN chats c", - " ON m.chat_id=c.id", - " WHERE m.state=?", - " AND m.hidden=0", - " AND m.chat_id>9", - " AND ct.blocked=0", - " AND c.blocked=0", - " AND NOT(c.muted_until=-1 OR c.muted_until>?)", - " ORDER BY m.timestamp DESC,m.id DESC;" - ), + "SELECT m.id +FROM msgs m +LEFT JOIN contacts ct + ON m.from_id=ct.id +LEFT JOIN chats c + ON m.chat_id=c.id +WHERE m.state=? +AND m.hidden=0 +AND m.chat_id>9 +AND ct.blocked=0 +AND c.blocked=0 +AND NOT(c.muted_until=-1 OR c.muted_until>?) +ORDER BY m.timestamp DESC,m.id DESC", (MessageState::InFresh, time()), |row| { let msg_id: MsgId = row.get(0)?; diff --git a/src/message.rs b/src/message.rs index 8c1a3106a7..d8dd4846c3 100644 --- a/src/message.rs +++ b/src/message.rs @@ -87,12 +87,10 @@ impl MsgId { let result = context .sql .query_row_optional( - concat!( - "SELECT m.state, mdns.msg_id", - " FROM msgs m LEFT JOIN msgs_mdns mdns ON mdns.msg_id=m.id", - " WHERE id=?", - " LIMIT 1", - ), + "SELECT m.state, mdns.msg_id + FROM msgs m LEFT JOIN msgs_mdns mdns ON mdns.msg_id=m.id + WHERE id=? + LIMIT 1", (self,), |row| { let state: MessageState = row.get(0)?; @@ -501,40 +499,38 @@ impl Message { let mut msg = context .sql .query_row_optional( - concat!( - "SELECT", - " m.id AS id,", - " rfc724_mid AS rfc724mid,", - " pre_rfc724_mid AS pre_rfc724mid,", - " m.mime_in_reply_to AS mime_in_reply_to,", - " m.chat_id AS chat_id,", - " m.from_id AS from_id,", - " m.to_id AS to_id,", - " m.timestamp AS timestamp,", - " m.timestamp_sent AS timestamp_sent,", - " m.timestamp_rcvd AS timestamp_rcvd,", - " m.ephemeral_timer AS ephemeral_timer,", - " m.ephemeral_timestamp AS ephemeral_timestamp,", - " m.type AS type,", - " m.state AS state,", - " mdns.msg_id AS mdn_msg_id,", - " m.download_state AS download_state,", - " m.error AS error,", - " m.msgrmsg AS msgrmsg,", - " m.starred AS original_msg_id,", - " m.mime_modified AS mime_modified,", - " m.txt AS txt,", - " m.subject AS subject,", - " m.param AS param,", - " m.hidden AS hidden,", - " m.location_id AS location,", - " c.blocked AS blocked", - " FROM msgs m", - " LEFT JOIN chats c ON c.id=m.chat_id", - " LEFT JOIN msgs_mdns mdns ON mdns.msg_id=m.id", - " WHERE m.id=? AND chat_id!=3", - " LIMIT 1", - ), + "SELECT + m.id AS id, + rfc724_mid AS rfc724mid, + pre_rfc724_mid AS pre_rfc724mid, + m.mime_in_reply_to AS mime_in_reply_to, + m.chat_id AS chat_id, + m.from_id AS from_id, + m.to_id AS to_id, + m.timestamp AS timestamp, + m.timestamp_sent AS timestamp_sent, + m.timestamp_rcvd AS timestamp_rcvd, + m.ephemeral_timer AS ephemeral_timer, + m.ephemeral_timestamp AS ephemeral_timestamp, + m.type AS type, + m.state AS state, + mdns.msg_id AS mdn_msg_id, + m.download_state AS download_state, + m.error AS error, + m.msgrmsg AS msgrmsg, + m.starred AS original_msg_id, + m.mime_modified AS mime_modified, + m.txt AS txt, + m.subject AS subject, + m.param AS param, + m.hidden AS hidden, + m.location_id AS location, + c.blocked AS blocked + FROM msgs m + LEFT JOIN chats c ON c.id=m.chat_id + LEFT JOIN msgs_mdns mdns ON mdns.msg_id=m.id + WHERE m.id=? AND chat_id!=3 + LIMIT 1", (id,), |row| { let state: MessageState = row.get("state")?; diff --git a/src/mimeparser.rs b/src/mimeparser.rs index fb66ac9605..c7f47dac15 100644 --- a/src/mimeparser.rs +++ b/src/mimeparser.rs @@ -2481,18 +2481,16 @@ async fn handle_mdn( let Some((msg_id, chat_id, has_mdns, is_dup)) = context .sql .query_row_optional( - concat!( - "SELECT", - " m.id AS msg_id,", - " c.id AS chat_id,", - " mdns.contact_id AS mdn_contact", - " FROM msgs m ", - " LEFT JOIN chats c ON m.chat_id=c.id", - " LEFT JOIN msgs_mdns mdns ON mdns.msg_id=m.id", - " WHERE rfc724_mid=? AND from_id=1", - " ORDER BY msg_id DESC, mdn_contact=? DESC", - " LIMIT 1", - ), + "SELECT + m.id AS msg_id, + c.id AS chat_id, + mdns.contact_id AS mdn_contact + FROM msgs m + LEFT JOIN chats c ON m.chat_id=c.id + LEFT JOIN msgs_mdns mdns ON mdns.msg_id=m.id + WHERE rfc724_mid=? AND from_id=1 + ORDER BY msg_id DESC, mdn_contact=? DESC + LIMIT 1", (&rfc724_mid, from_id), |row| { let msg_id: MsgId = row.get("msg_id")?;