summaryrefslogtreecommitdiff
path: root/src/channel/repo
diff options
context:
space:
mode:
authorOwen Jacobson <owen@grimoire.ca>2024-09-13 22:30:02 -0400
committerOwen Jacobson <owen@grimoire.ca>2024-09-13 23:12:31 -0400
commit407ca8df6284ce1a4c649b018c7326fd195bbd26 (patch)
tree876091c17efbd765a4c7ef339548c0ff4dfb96d5 /src/channel/repo
parent388a3d5a925aef7ff39339454ae0d720e05f038e (diff)
Support Last-Event-Id as a method of resuming channel events after a disconnect
Diffstat (limited to 'src/channel/repo')
-rw-r--r--src/channel/repo/messages.rs3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/channel/repo/messages.rs b/src/channel/repo/messages.rs
index fe833b6..b465f61 100644
--- a/src/channel/repo/messages.rs
+++ b/src/channel/repo/messages.rs
@@ -73,6 +73,7 @@ impl<'c> Messages<'c> {
pub async fn for_replay(
&mut self,
channel: &ChannelId,
+ resume_at: Option<&DateTime>,
) -> Result<Vec<BroadcastMessage>, BoxedError> {
let messages = sqlx::query!(
r#"
@@ -85,9 +86,11 @@ impl<'c> Messages<'c> {
from message
join login on message.sender = login.id
where channel = $1
+ and coalesce(sent_at > $2, true)
order by sent_at asc
"#,
channel,
+ resume_at,
)
.map(|row| BroadcastMessage {
id: row.id,