summaryrefslogtreecommitdiff
path: root/src/events/app.rs
diff options
context:
space:
mode:
authorOwen Jacobson <owen@grimoire.ca>2024-09-27 23:46:55 -0400
committerOwen Jacobson <owen@grimoire.ca>2024-09-28 01:00:12 -0400
commit155f6f2556b21e6b25afe096b19adcde1255c598 (patch)
treefb20184cd244d2b9138603fbd4909d7968cf0796 /src/events/app.rs
parent60b711c844f8624348d5d1dac3a625532a8e2a82 (diff)
Expire channels, too.
Diffstat (limited to 'src/events/app.rs')
-rw-r--r--src/events/app.rs11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/events/app.rs b/src/events/app.rs
index 03f3ee6..5162c67 100644
--- a/src/events/app.rs
+++ b/src/events/app.rs
@@ -64,9 +64,10 @@ impl<'a> Events<'a> {
let mut events = Vec::with_capacity(expired.len());
for (channel, message) in expired {
+ let sequence = tx.message_events().assign_sequence(&channel).await?;
let event = tx
.message_events()
- .delete_expired(&channel, &message, relative_to)
+ .delete_expired(&channel, &message, sequence, relative_to)
.await?;
events.push(event);
}
@@ -134,9 +135,11 @@ impl<'a> Events<'a> {
Ok(created_events.chain(replay).chain(live_messages).scan(
resume_at,
|resume_point, event| {
- let channel = &event.channel.id;
- let sequence = event.sequence;
- resume_point.advance(channel, sequence);
+ let channel = &event.channel_id();
+ match event.data {
+ types::ChannelEventData::Deleted(_) => resume_point.forget(channel),
+ _ => resume_point.advance(channel, event.sequence),
+ }
let event = types::ResumableEvent(resume_point.clone(), event);