diff options
| author | Owen Jacobson <owen@grimoire.ca> | 2024-10-09 00:57:31 -0400 |
|---|---|---|
| committer | Owen Jacobson <owen@grimoire.ca> | 2024-10-09 11:45:31 -0400 |
| commit | ba96974bdebd6d4ec345907d49944b5ee644ed47 (patch) | |
| tree | 8811ef8981a915a8cc17d8a1e576750b31cbdd0b /src/message | |
| parent | da1810afc5a627a518131cfb0af0996c5ec60bcf (diff) | |
Provide a view of logins to clients.
Diffstat (limited to 'src/message')
| -rw-r--r-- | src/message/app.rs | 2 | ||||
| -rw-r--r-- | src/message/repo.rs | 66 | ||||
| -rw-r--r-- | src/message/snapshot.rs | 4 |
3 files changed, 32 insertions, 40 deletions
diff --git a/src/message/app.rs b/src/message/app.rs index 385c92e..3385af2 100644 --- a/src/message/app.rs +++ b/src/message/app.rs @@ -7,7 +7,7 @@ use crate::{ channel::{self, repo::Provider as _}, clock::DateTime, db::NotFound as _, - event::{broadcaster::Broadcaster, repo::Provider as _, Event, Sequence}, + event::{repo::Provider as _, Broadcaster, Event, Sequence}, login::Login, }; diff --git a/src/message/repo.rs b/src/message/repo.rs index e098fb2..0560f4a 100644 --- a/src/message/repo.rs +++ b/src/message/repo.rs @@ -38,6 +38,10 @@ impl<'c> Messages<'c> { values ($1, $2, $3, $4, $5, $6) returning id as "id: Id", + channel as "channel: channel::Id", + sender as "sender: login::Id", + sent_at as "sent_at: DateTime", + sent_sequence as "sent_sequence: Sequence", body "#, id, @@ -49,9 +53,12 @@ impl<'c> Messages<'c> { ) .map(|row| History { message: Message { - sent: *sent, - channel: channel.id().clone(), - sender: sender.clone(), + sent: Instant { + at: row.sent_at, + sequence: row.sent_sequence, + }, + channel: row.channel, + sender: row.sender, id: row.id, body: row.body, }, @@ -72,18 +79,16 @@ impl<'c> Messages<'c> { let messages = sqlx::query!( r#" select - message.channel as "channel: channel::Id", - sender.id as "sender_id: login::Id", - sender.name as "sender_name", - message.id as "id: Id", - message.body, + channel as "channel: channel::Id", + sender as "sender: login::Id", + id as "id: Id", + body, sent_at as "sent_at: DateTime", sent_sequence as "sent_sequence: Sequence" from message - join login as sender on message.sender = sender.id - where message.channel = $1 - and coalesce(message.sent_sequence <= $2, true) - order by message.sent_sequence + where channel = $1 + and coalesce(sent_sequence <= $2, true) + order by sent_sequence "#, channel_id, resume_at, @@ -95,10 +100,7 @@ impl<'c> Messages<'c> { sequence: row.sent_sequence, }, channel: row.channel, - sender: Login { - id: row.sender_id, - name: row.sender_name, - }, + sender: row.sender, id: row.id, body: row.body, }, @@ -114,16 +116,14 @@ impl<'c> Messages<'c> { let message = sqlx::query!( r#" select - message.channel as "channel: channel::Id", - sender.id as "sender_id: login::Id", - sender.name as "sender_name", - message.id as "id: Id", - message.body, + channel as "channel: channel::Id", + sender as "sender: login::Id", + id as "id: Id", + body, sent_at as "sent_at: DateTime", sent_sequence as "sent_sequence: Sequence" from message - join login as sender on message.sender = sender.id - where message.id = $1 + where id = $1 "#, message, ) @@ -134,10 +134,7 @@ impl<'c> Messages<'c> { sequence: row.sent_sequence, }, channel: row.channel, - sender: Login { - id: row.sender_id, - name: row.sender_name, - }, + sender: row.sender, id: row.id, body: row.body, }, @@ -194,15 +191,13 @@ impl<'c> Messages<'c> { let messages = sqlx::query!( r#" select - message.channel as "channel: channel::Id", - sender.id as "sender_id: login::Id", - sender.name as "sender_name", - message.id as "id: Id", - message.body, + channel as "channel: channel::Id", + sender as "sender: login::Id", + id as "id: Id", + body, sent_at as "sent_at: DateTime", sent_sequence as "sent_sequence: Sequence" from message - join login as sender on message.sender = sender.id where coalesce(message.sent_sequence > $1, true) "#, resume_at, @@ -214,10 +209,7 @@ impl<'c> Messages<'c> { sequence: row.sent_sequence, }, channel: row.channel, - sender: Login { - id: row.sender_id, - name: row.sender_name, - }, + sender: row.sender, id: row.id, body: row.body, }, diff --git a/src/message/snapshot.rs b/src/message/snapshot.rs index 8c1e62a..0eb37bb 100644 --- a/src/message/snapshot.rs +++ b/src/message/snapshot.rs @@ -2,14 +2,14 @@ use super::{ event::{Event, Sent}, Id, }; -use crate::{channel, event::Instant, login::Login}; +use crate::{channel, event::Instant, login}; #[derive(Clone, Debug, Eq, PartialEq, serde::Serialize)] pub struct Message { #[serde(flatten)] pub sent: Instant, pub channel: channel::Id, - pub sender: Login, + pub sender: login::Id, pub id: Id, pub body: String, } |
