aboutsummaryrefslogtreecommitdiffstats
path: root/filamento/src/db.rs
diff options
context:
space:
mode:
authorLibravatar cel 🌸 <cel@bunny.garden>2025-04-11 06:51:03 +0100
committerLibravatar cel 🌸 <cel@bunny.garden>2025-04-11 06:52:15 +0100
commit1e5d4b504901bbd8fbf884e0f006d5717e1bc88c (patch)
treedaee0a4b5d6b07afdc7ee6c859157da2a7d30d91 /filamento/src/db.rs
parent113d9d9ce54528f1f0a782e867683074aaa43ee4 (diff)
downloadluz-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.rs24
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)