diff options
Diffstat (limited to 'src/channel/repo.rs')
| -rw-r--r-- | src/channel/repo.rs | 75 |
1 files changed, 37 insertions, 38 deletions
diff --git a/src/channel/repo.rs b/src/channel/repo.rs index 812a259..fd2173a 100644 --- a/src/channel/repo.rs +++ b/src/channel/repo.rs @@ -31,8 +31,7 @@ impl Channels<'_> { sqlx::query!( r#" - insert - into channel (id, created_at, created_sequence, last_sequence) + insert into conversation (id, created_at, created_sequence, last_sequence) values ($1, $2, $3, $4) "#, id, @@ -45,7 +44,7 @@ impl Channels<'_> { sqlx::query!( r#" - insert into channel_name (id, display_name, canonical_name) + insert into conversation_name (id, display_name, canonical_name) values ($1, $2, $3) "#, id, @@ -75,14 +74,14 @@ impl Channels<'_> { id as "id: Id", name.display_name as "display_name?: String", name.canonical_name as "canonical_name?: String", - channel.created_at as "created_at: DateTime", - channel.created_sequence as "created_sequence: Sequence", + conversation.created_at as "created_at: DateTime", + conversation.created_sequence as "created_sequence: Sequence", deleted.deleted_at as "deleted_at?: DateTime", deleted.deleted_sequence as "deleted_sequence?: Sequence" - from channel - left join channel_name as name + from conversation + left join conversation_name as name using (id) - left join channel_deleted as deleted + left join conversation_deleted as deleted using (id) where id = $1 "#, @@ -112,16 +111,16 @@ impl Channels<'_> { id as "id: Id", name.display_name as "display_name?: String", name.canonical_name as "canonical_name?: String", - channel.created_at as "created_at: DateTime", - channel.created_sequence as "created_sequence: Sequence", + conversation.created_at as "created_at: DateTime", + conversation.created_sequence as "created_sequence: Sequence", deleted.deleted_at as "deleted_at?: DateTime", deleted.deleted_sequence as "deleted_sequence?: Sequence" - from channel - left join channel_name as name + from conversation + left join conversation_name as name using (id) - left join channel_deleted as deleted + left join conversation_deleted as deleted using (id) - where channel.created_sequence <= $1 + where conversation.created_sequence <= $1 order by name.canonical_name "#, resume_at, @@ -152,16 +151,16 @@ impl Channels<'_> { id as "id: Id", name.display_name as "display_name?: String", name.canonical_name as "canonical_name?: String", - channel.created_at as "created_at: DateTime", - channel.created_sequence as "created_sequence: Sequence", + conversation.created_at as "created_at: DateTime", + conversation.created_sequence as "created_sequence: Sequence", deleted.deleted_at as "deleted_at?: DateTime", deleted.deleted_sequence as "deleted_sequence?: Sequence" - from channel - left join channel_name as name + from conversation + left join conversation_name as name using (id) - left join channel_deleted as deleted + left join conversation_deleted as deleted using (id) - where channel.last_sequence > $1 + where conversation.last_sequence > $1 "#, resume_at, ) @@ -192,7 +191,7 @@ impl Channels<'_> { let id = channel.id(); sqlx::query!( r#" - update channel + update conversation set last_sequence = max(last_sequence, $1) where id = $2 returning id as "id: Id" @@ -205,7 +204,7 @@ impl Channels<'_> { sqlx::query!( r#" - insert into channel_deleted (id, deleted_at, deleted_sequence) + insert into conversation_deleted (id, deleted_at, deleted_sequence) values ($1, $2, $3) "#, id, @@ -215,9 +214,9 @@ impl Channels<'_> { .execute(&mut *self.0) .await?; - // Small social responsibility hack here: when a channel is deleted, its name is - // retconned to have been the empty string. Someone reading the event stream - // afterwards, or looking at channels via the API, cannot retrieve the + // Small social responsibility hack here: when a conversation is deleted, its + // name is retconned to have been the empty string. Someone reading the event + // stream afterwards, or looking at channels via the API, cannot retrieve the // "deleted" channel's information by ignoring the deletion event. // // This also avoids the need for a separate name reservation table to ensure @@ -225,7 +224,7 @@ impl Channels<'_> { // is unique over non-null values. sqlx::query!( r#" - delete from channel_name + delete from conversation_name where id = $1 "#, id, @@ -242,11 +241,11 @@ impl Channels<'_> { let channels = sqlx::query_scalar!( r#" with has_messages as ( - select channel + select conversation from message - group by channel + group by conversation ) - delete from channel_deleted + delete from conversation_deleted where deleted_at < $1 and id not in has_messages returning id as "id: Id" @@ -260,7 +259,7 @@ impl Channels<'_> { // Wanted: a way to batch these up into one query. sqlx::query!( r#" - delete from channel + delete from conversation where id = $1 "#, channel, @@ -276,21 +275,21 @@ impl Channels<'_> { let channels = sqlx::query!( r#" select - channel.id as "id: Id", + conversation.id as "id: Id", name.display_name as "display_name?: String", name.canonical_name as "canonical_name?: String", - channel.created_at as "created_at: DateTime", - channel.created_sequence as "created_sequence: Sequence", + conversation.created_at as "created_at: DateTime", + conversation.created_sequence as "created_sequence: Sequence", deleted.deleted_at as "deleted_at?: DateTime", deleted.deleted_sequence as "deleted_sequence?: Sequence" - from channel - left join channel_name as name + from conversation + left join conversation_name as name using (id) - left join channel_deleted as deleted + left join conversation_deleted as deleted using (id) left join message - on channel.id = message.channel - where channel.created_at < $1 + on conversation.id = message.conversation + where conversation.created_at < $1 and message.id is null and deleted.id is null "#, |
