diff options
Diffstat (limited to 'src/message/repo.rs')
| -rw-r--r-- | src/message/repo.rs | 36 |
1 files changed, 9 insertions, 27 deletions
diff --git a/src/message/repo.rs b/src/message/repo.rs index 5b199a7..e098fb2 100644 --- a/src/message/repo.rs +++ b/src/message/repo.rs @@ -2,7 +2,7 @@ use sqlx::{sqlite::Sqlite, SqliteConnection, Transaction}; use super::{snapshot::Message, History, Id}; use crate::{ - channel::{self, Channel}, + channel, clock::DateTime, event::{Instant, ResumePoint, Sequence}, login::{self, Login}, @@ -50,10 +50,7 @@ impl<'c> Messages<'c> { .map(|row| History { message: Message { sent: *sent, - // Use "as created" here as we don't care about providing a perfectly up-to-date - // representation of the channel. The `name` is informational (and the ID, which is - // normative, is fixed over time). - channel: channel.as_created(), + channel: channel.id().clone(), sender: sender.clone(), id: row.id, body: row.body, @@ -75,8 +72,7 @@ impl<'c> Messages<'c> { let messages = sqlx::query!( r#" select - channel.id as "channel_id: channel::Id", - channel.name as "channel_name", + message.channel as "channel: channel::Id", sender.id as "sender_id: login::Id", sender.name as "sender_name", message.id as "id: Id", @@ -84,9 +80,8 @@ impl<'c> Messages<'c> { sent_at as "sent_at: DateTime", sent_sequence as "sent_sequence: Sequence" from message - join channel on message.channel = channel.id join login as sender on message.sender = sender.id - where channel.id = $1 + where message.channel = $1 and coalesce(message.sent_sequence <= $2, true) order by message.sent_sequence "#, @@ -99,10 +94,7 @@ impl<'c> Messages<'c> { at: row.sent_at, sequence: row.sent_sequence, }, - channel: Channel { - id: row.channel_id, - name: row.channel_name, - }, + channel: row.channel, sender: Login { id: row.sender_id, name: row.sender_name, @@ -122,8 +114,7 @@ impl<'c> Messages<'c> { let message = sqlx::query!( r#" select - channel.id as "channel_id: channel::Id", - channel.name as "channel_name", + message.channel as "channel: channel::Id", sender.id as "sender_id: login::Id", sender.name as "sender_name", message.id as "id: Id", @@ -131,7 +122,6 @@ impl<'c> Messages<'c> { sent_at as "sent_at: DateTime", sent_sequence as "sent_sequence: Sequence" from message - join channel on message.channel = channel.id join login as sender on message.sender = sender.id where message.id = $1 "#, @@ -143,10 +133,7 @@ impl<'c> Messages<'c> { at: row.sent_at, sequence: row.sent_sequence, }, - channel: Channel { - id: row.channel_id, - name: row.channel_name, - }, + channel: row.channel, sender: Login { id: row.sender_id, name: row.sender_name, @@ -207,8 +194,7 @@ impl<'c> Messages<'c> { let messages = sqlx::query!( r#" select - channel.id as "channel_id: channel::Id", - channel.name as "channel_name", + message.channel as "channel: channel::Id", sender.id as "sender_id: login::Id", sender.name as "sender_name", message.id as "id: Id", @@ -216,7 +202,6 @@ impl<'c> Messages<'c> { sent_at as "sent_at: DateTime", sent_sequence as "sent_sequence: Sequence" from message - join channel on message.channel = channel.id join login as sender on message.sender = sender.id where coalesce(message.sent_sequence > $1, true) "#, @@ -228,10 +213,7 @@ impl<'c> Messages<'c> { at: row.sent_at, sequence: row.sent_sequence, }, - channel: Channel { - id: row.channel_id, - name: row.channel_name, - }, + channel: row.channel, sender: Login { id: row.sender_id, name: row.sender_name, |
