diff options
author | 2025-04-11 06:51:03 +0100 | |
---|---|---|
committer | 2025-04-11 06:52:15 +0100 | |
commit | 1e5d4b504901bbd8fbf884e0f006d5717e1bc88c (patch) | |
tree | daee0a4b5d6b07afdc7ee6c859157da2a7d30d91 /filamento/src/db.rs | |
parent | 113d9d9ce54528f1f0a782e867683074aaa43ee4 (diff) | |
download | luz-1e5d4b504901bbd8fbf884e0f006d5717e1bc88c.tar.gz luz-1e5d4b504901bbd8fbf884e0f006d5717e1bc88c.tar.bz2 luz-1e5d4b504901bbd8fbf884e0f006d5717e1bc88c.zip |
feat(filamento): `get_messages_with_users()`
Diffstat (limited to 'filamento/src/db.rs')
-rw-r--r-- | filamento/src/db.rs | 24 |
1 files changed, 24 insertions, 0 deletions
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<Vec<(Message, User)>, 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<Row> = + 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<Online, Error> { let online: Online = sqlx::query_as("select * from cached_status where id = 0") .fetch_one(&self.db) |