summaryrefslogtreecommitdiff
path: root/src/message/repo.rs
diff options
context:
space:
mode:
authorOwen Jacobson <owen@grimoire.ca>2024-10-30 02:01:31 -0400
committerOwen Jacobson <owen@grimoire.ca>2024-10-30 02:01:31 -0400
commit50a382528288248381b07c25719cbc9a519b4c81 (patch)
tree01fc7a2997c3678aa687a75e2e7d56ef0876b450 /src/message/repo.rs
parent70591c5ac10069a4ae649bd6f79d769da9e32a98 (diff)
Resume points are no longer optional.
This is an inconsequential change for actual clients, since "resume from the beginning" was never a preferred mode of operation, and it simplifies some internals. It should also mean we get better query plans where `coalesce(cond, true)` was previously being used.
Diffstat (limited to 'src/message/repo.rs')
-rw-r--r--src/message/repo.rs21
1 files changed, 11 insertions, 10 deletions
diff --git a/src/message/repo.rs b/src/message/repo.rs
index c8ceceb..913135c 100644
--- a/src/message/repo.rs
+++ b/src/message/repo.rs
@@ -4,7 +4,7 @@ use super::{snapshot::Message, Body, History, Id};
use crate::{
channel,
clock::DateTime,
- event::{Instant, ResumePoint, Sequence},
+ event::{Instant, Sequence},
login::{self, Login},
};
@@ -106,22 +106,22 @@ impl<'c> Messages<'c> {
Ok(messages)
}
- pub async fn all(&mut self, resume_at: ResumePoint) -> Result<Vec<History>, sqlx::Error> {
+ pub async fn all(&mut self, resume_at: Sequence) -> Result<Vec<History>, sqlx::Error> {
let messages = sqlx::query!(
r#"
select
message.channel as "channel: channel::Id",
message.sender as "sender: login::Id",
- id as "id: Id",
+ message.id as "id: Id",
message.body as "body: Body",
message.sent_at as "sent_at: DateTime",
message.sent_sequence as "sent_sequence: Sequence",
- deleted.deleted_at as "deleted_at: DateTime",
- deleted.deleted_sequence as "deleted_sequence: Sequence"
+ deleted.deleted_at as "deleted_at?: DateTime",
+ deleted.deleted_sequence as "deleted_sequence?: Sequence"
from message
left join message_deleted as deleted
using (id)
- where coalesce(message.sent_sequence <= $2, true)
+ where message.sent_sequence <= $1
order by message.sent_sequence
"#,
resume_at,
@@ -282,7 +282,7 @@ impl<'c> Messages<'c> {
Ok(messages)
}
- pub async fn replay(&mut self, resume_at: ResumePoint) -> Result<Vec<History>, sqlx::Error> {
+ pub async fn replay(&mut self, resume_at: Sequence) -> Result<Vec<History>, sqlx::Error> {
let messages = sqlx::query!(
r#"
select
@@ -292,12 +292,13 @@ impl<'c> Messages<'c> {
message.sent_at as "sent_at: DateTime",
message.sent_sequence as "sent_sequence: Sequence",
message.body as "body: Body",
- deleted.deleted_at as "deleted_at: DateTime",
- deleted.deleted_sequence as "deleted_sequence: Sequence"
+ deleted.deleted_at as "deleted_at?: DateTime",
+ deleted.deleted_sequence as "deleted_sequence?: Sequence"
from message
left join message_deleted as deleted
using (id)
- where coalesce(message.sent_sequence > $1, true)
+ where message.sent_sequence > $1
+ or deleted.deleted_sequence > $1
"#,
resume_at,
)