diff options
| author | Owen Jacobson <owen@grimoire.ca> | 2025-06-23 21:28:36 -0400 |
|---|---|---|
| committer | Owen Jacobson <owen@grimoire.ca> | 2025-07-03 22:07:20 -0400 |
| commit | 5af4aea1e2f143499529b70f9cf191c6994265c6 (patch) | |
| tree | 8d5aacb4a4643131bb2ced513c79ed6998548a6b /src/channel/repo.rs | |
| parent | 981cd3c0f4cf912c1d91ee5d9c39f5c1aa7afecf (diff) | |
Rename "channel" to "conversation" in the database.
I've - somewhat arbitrarily - started renaming column aliases, as well, though the corresponding Rust data model, API fields and nouns, and client code still references them as "channel" (or as derived terms).
As with so many schema changes, this entails a complete rebuild of a substantial portion of the schema. sqlite3 still doesn't have very many `alter table` primitives, for renaming columns in particular.
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 "#, |
