From 1e5d4b504901bbd8fbf884e0f006d5717e1bc88c Mon Sep 17 00:00:00 2001 From: cel 🌸 Date: Fri, 11 Apr 2025 06:51:03 +0100 Subject: feat(filamento): `get_messages_with_users()` --- filamento/src/db.rs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'filamento/src/db.rs') diff --git a/filamento/src/db.rs b/filamento/src/db.rs index d94293d..cf21325 100644 --- a/filamento/src/db.rs +++ b/filamento/src/db.rs @@ -669,6 +669,30 @@ impl Db { Ok(messages) } + pub(crate) async fn read_message_history_with_users( + &self, + chat: JID, + ) -> Result, Error> { + let chat_id = self.read_chat_id(chat).await?; + #[derive(sqlx::FromRow)] + pub struct Row { + #[sqlx(flatten)] + user: User, + #[sqlx(flatten)] + message: Message, + } + let messages: Vec = + sqlx::query_as("select * from messages join users on jid = from_jid where chat_id = ? order by timestamp asc") + .bind(chat_id) + .fetch_all(&self.db) + .await?; + let messages = messages + .into_iter() + .map(|row| (row.message, row.user)) + .collect(); + Ok(messages) + } + pub(crate) async fn read_cached_status(&self) -> Result { let online: Online = sqlx::query_as("select * from cached_status where id = 0") .fetch_one(&self.db) -- cgit