summaryrefslogtreecommitdiff
path: root/src/channel
diff options
context:
space:
mode:
Diffstat (limited to 'src/channel')
-rw-r--r--src/channel/repo.rs21
1 files changed, 17 insertions, 4 deletions
diff --git a/src/channel/repo.rs b/src/channel/repo.rs
index 7206c21..6612151 100644
--- a/src/channel/repo.rs
+++ b/src/channel/repo.rs
@@ -32,12 +32,13 @@ impl<'c> Channels<'c> {
sqlx::query!(
r#"
insert
- into channel (id, created_at, created_sequence)
- values ($1, $2, $3)
+ into channel (id, created_at, created_sequence, last_sequence)
+ values ($1, $2, $3, $4)
"#,
id,
created.at,
created.sequence,
+ created.sequence,
)
.execute(&mut *self.0)
.await?;
@@ -160,8 +161,7 @@ impl<'c> Channels<'c> {
using (id)
left join channel_deleted as deleted
using (id)
- where channel.created_sequence > $1
- or deleted.deleted_sequence > $1
+ where channel.last_sequence > $1
"#,
resume_at,
)
@@ -192,6 +192,19 @@ impl<'c> Channels<'c> {
let id = channel.id();
sqlx::query!(
r#"
+ update channel
+ set last_sequence = max(last_sequence, $1)
+ where id = $2
+ returning id as "id: Id"
+ "#,
+ deleted.sequence,
+ id,
+ )
+ .fetch_one(&mut *self.0)
+ .await?;
+
+ sqlx::query!(
+ r#"
insert into channel_deleted (id, deleted_at, deleted_sequence)
values ($1, $2, $3)
"#,