summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorOwen Jacobson <owen@grimoire.ca>2024-10-08 22:57:39 -0400
committerOwen Jacobson <owen@grimoire.ca>2024-10-09 11:45:31 -0400
commitda1810afc5a627a518131cfb0af0996c5ec60bcf (patch)
tree311cd4b3d58043231ff048d93f063cf3658e1bc3 /src
parent9e171096a72d3e63626df7b09970476aba28eb06 (diff)
Simplify channel IDs in events. Remove redundant ones.
Diffstat (limited to 'src')
-rw-r--r--src/message/event.rs6
-rw-r--r--src/message/history.rs1
-rw-r--r--src/message/repo.rs36
-rw-r--r--src/message/snapshot.rs4
4 files changed, 12 insertions, 35 deletions
diff --git a/src/message/event.rs b/src/message/event.rs
index 9f49a32..1cd5847 100644
--- a/src/message/event.rs
+++ b/src/message/event.rs
@@ -1,8 +1,5 @@
use super::{snapshot::Message, Id};
-use crate::{
- channel::Channel,
- event::{Instant, Sequenced},
-};
+use crate::event::{Instant, Sequenced};
#[derive(Clone, Debug, Eq, PartialEq, serde::Serialize)]
#[serde(tag = "event", rename_all = "snake_case")]
@@ -42,7 +39,6 @@ impl From<Sent> for Event {
pub struct Deleted {
#[serde(flatten)]
pub instant: Instant,
- pub channel: Channel,
pub id: Id,
}
diff --git a/src/message/history.rs b/src/message/history.rs
index b5886af..09e69b7 100644
--- a/src/message/history.rs
+++ b/src/message/history.rs
@@ -45,7 +45,6 @@ impl History {
self.deleted.map(|instant| {
Deleted {
instant,
- channel: self.message.channel.clone(),
id: self.message.id.clone(),
}
.into()
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,
diff --git a/src/message/snapshot.rs b/src/message/snapshot.rs
index a8cf734..8c1e62a 100644
--- a/src/message/snapshot.rs
+++ b/src/message/snapshot.rs
@@ -2,13 +2,13 @@ use super::{
event::{Event, Sent},
Id,
};
-use crate::{channel::Channel, event::Instant, login::Login};
+use crate::{channel, event::Instant, login::Login};
#[derive(Clone, Debug, Eq, PartialEq, serde::Serialize)]
pub struct Message {
#[serde(flatten)]
pub sent: Instant,
- pub channel: Channel,
+ pub channel: channel::Id,
pub sender: Login,
pub id: Id,
pub body: String,