summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOwen Jacobson <owen@grimoire.ca>2025-06-23 21:28:36 -0400
committerOwen Jacobson <owen@grimoire.ca>2025-07-03 22:07:20 -0400
commit5af4aea1e2f143499529b70f9cf191c6994265c6 (patch)
tree8d5aacb4a4643131bb2ced513c79ed6998548a6b
parent981cd3c0f4cf912c1d91ee5d9c39f5c1aa7afecf (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.
-rw-r--r--.sqlx/query-008401c1a1988a925d76aeeb722b56858a0c2aa7eedf4cc5824ea61da504f2f7.json (renamed from .sqlx/query-579bf0557d3e141dfd411c25c2ae66d6abb70f7bd2413cfbe23b71d1ce6090cd.json)6
-rw-r--r--.sqlx/query-0795c8c7f01f67cc05e1d0f750c807319b2c1d3069f9186ccaf722904310cf3d.json (renamed from .sqlx/query-3ff8a089ca1c57111e8c0e8d6d9da73e88a6cab35ae511674d25aa78bac9bc04.json)6
-rw-r--r--.sqlx/query-0e06b7b5aeb29b946ab79430dd7a65ab18430e7f71afde9af52e99767c1f268f.json20
-rw-r--r--.sqlx/query-1f0f35655dd57532897aaba9bde38547e626387dfe5b859f02ae1dbe171d5741.json12
-rw-r--r--.sqlx/query-2773f12ef58c251596dd00f0bd048975fb06f090a11622cc74ced47a3d7ad44a.json12
-rw-r--r--.sqlx/query-454ca70caa83eee2dac585cf421524e41055cddf76dd4e4016142f61e0a4903f.json12
-rw-r--r--.sqlx/query-487092b18b01005fdb446c11f4726612141f7242decad1de5d9d5f166cb04990.json20
-rw-r--r--.sqlx/query-4c27c8f7ed9b6315433dc2b5f787a61d82693fe0426b46f9971fcde5e44f38b0.json12
-rw-r--r--.sqlx/query-4e39f27605dec811824fddae5559dda60c4b2a9c6746376a3552ce73b7d8ea38.json20
-rw-r--r--.sqlx/query-5ec47dd232a277d37e2f1a523cc4aadf757f55c6f44836e9c37b36e473ac2321.json12
-rw-r--r--.sqlx/query-66da54683caf3b003d20427290da9266cbd53de8761ea9ea58c4311ba78677a9.json12
-rw-r--r--.sqlx/query-6a767f2ad017fe3f56c4eb6060ea34dba0d4d325bc07fc882bea05abbae5414c.json12
-rw-r--r--.sqlx/query-814400dfe985ef284db22c89d6e1a0eb2131b6581759a5028afb6a0910284803.json12
-rw-r--r--.sqlx/query-85145c8b8264e7d01eef66e22353037f33fd3a3eaec0e36f06ffbbffb625aa24.json20
-rw-r--r--.sqlx/query-927cc51fad82650938c68b8da423da82470585807b45622535cbe83cc35a10e8.json (renamed from .sqlx/query-c44dbcc7f4c0257a991e1ae4a2679aaa4c3f28aa5436a9af067a754e46af5589.json)4
-rw-r--r--.sqlx/query-a4b34593fdf71bb911beb850cfa88adb346b1770e32785166bd43cb853143a7f.json56
-rw-r--r--.sqlx/query-a781f6b9ab38ade2a0b15d665e297e9ff65546b87e6667ad68bbc162a3e464c4.json (renamed from .sqlx/query-b18432e78891ffca0d7f3fcd1c543db4a3f02c211462704f7810fdbed924ac30.json)6
-rw-r--r--.sqlx/query-c4f0bbdcfdd1d88def0f19f69141a2e9dd3efaa0f1911765e73d1c00b34ddbaa.json (renamed from .sqlx/query-17f6f507d9343a734e1098f6ce56d372edeb35f92769a0181a71d68a68780649.json)6
-rw-r--r--.sqlx/query-c960562be5b34678c305895cc4aaa6d96ad25184042ea1f989499285d41400f8.json (renamed from .sqlx/query-e36d7cd00f040807c3994b5010f2f77b943ec225244fcfc24013b12a48084a1e.json)4
-rw-r--r--.sqlx/query-ca9146e92c3b3e724f4b58ad72529de7030a4863d3bf479bb19a6a2a76d1590b.json12
-rw-r--r--.sqlx/query-cf24c0d42c7e5bdc16a7925544d2057667955e468d1b6683a89d45d6ce58166f.json56
-rw-r--r--.sqlx/query-dfb54b7d586cc99b9e03cb08727b5af8d0b95fc30797dadcc0eb98f12667f14e.json12
-rw-r--r--.sqlx/query-e2cc4ef6af56e6ac1fcf2353fb52cdf99a84c160cf1fc2bd1e889c4c6fff59ea.json (renamed from .sqlx/query-ad1485f0a5514bcfaf68477723ae0f13e93a1f18213e208d3a181936a36da5fb.json)4
-rw-r--r--.sqlx/query-e9689d49d357b1df287bc2487bd9d1179bbf8c33398ee7b9af2ea265c4b6539c.json (renamed from .sqlx/query-fb7114754c6dc8ffe623ae0f3f61ec2e20795692db7019d962378c740ae69599.json)6
-rw-r--r--.sqlx/query-f796c7c4d16a7bda355c5cbff7f0c48a70d61597e2f284bf29771a9c3c2615a9.json (renamed from .sqlx/query-3d0354407ac4dcd7b012328b9086c4f582bd2b3dc99a6a8e5f4853e0d4c43c50.json)6
-rw-r--r--migrations/20250624003106_rename_channel_to_conversation.sql153
-rw-r--r--src/channel/repo.rs75
-rw-r--r--src/message/repo.rs28
28 files changed, 384 insertions, 232 deletions
diff --git a/.sqlx/query-579bf0557d3e141dfd411c25c2ae66d6abb70f7bd2413cfbe23b71d1ce6090cd.json b/.sqlx/query-008401c1a1988a925d76aeeb722b56858a0c2aa7eedf4cc5824ea61da504f2f7.json
index 27349d7..f80d588 100644
--- a/.sqlx/query-579bf0557d3e141dfd411c25c2ae66d6abb70f7bd2413cfbe23b71d1ce6090cd.json
+++ b/.sqlx/query-008401c1a1988a925d76aeeb722b56858a0c2aa7eedf4cc5824ea61da504f2f7.json
@@ -1,6 +1,6 @@
{
"db_name": "SQLite",
- "query": "\n insert into message\n (id, channel, sender, sent_at, sent_sequence, body, last_sequence)\n values ($1, $2, $3, $4, $5, $6, $7)\n returning\n id as \"id: Id\",\n channel as \"channel: channel::Id\",\n sender as \"sender: user::Id\",\n sent_at as \"sent_at: DateTime\",\n sent_sequence as \"sent_sequence: Sequence\",\n body as \"body: Body\"\n ",
+ "query": "\n insert into message\n (id, conversation, sender, sent_at, sent_sequence, body, last_sequence)\n values ($1, $2, $3, $4, $5, $6, $7)\n returning\n id as \"id: Id\",\n conversation as \"conversation: channel::Id\",\n sender as \"sender: user::Id\",\n sent_at as \"sent_at: DateTime\",\n sent_sequence as \"sent_sequence: Sequence\",\n body as \"body: Body\"\n ",
"describe": {
"columns": [
{
@@ -9,7 +9,7 @@
"type_info": "Text"
},
{
- "name": "channel: channel::Id",
+ "name": "conversation: channel::Id",
"ordinal": 1,
"type_info": "Text"
},
@@ -46,5 +46,5 @@
true
]
},
- "hash": "579bf0557d3e141dfd411c25c2ae66d6abb70f7bd2413cfbe23b71d1ce6090cd"
+ "hash": "008401c1a1988a925d76aeeb722b56858a0c2aa7eedf4cc5824ea61da504f2f7"
}
diff --git a/.sqlx/query-3ff8a089ca1c57111e8c0e8d6d9da73e88a6cab35ae511674d25aa78bac9bc04.json b/.sqlx/query-0795c8c7f01f67cc05e1d0f750c807319b2c1d3069f9186ccaf722904310cf3d.json
index ad364ea..20d217e 100644
--- a/.sqlx/query-3ff8a089ca1c57111e8c0e8d6d9da73e88a6cab35ae511674d25aa78bac9bc04.json
+++ b/.sqlx/query-0795c8c7f01f67cc05e1d0f750c807319b2c1d3069f9186ccaf722904310cf3d.json
@@ -1,6 +1,6 @@
{
"db_name": "SQLite",
- "query": "\n select\n id as \"id: Id\",\n message.channel as \"channel: channel::Id\",\n message.sender as \"sender: user::Id\",\n message.sent_at as \"sent_at: DateTime\",\n message.sent_sequence as \"sent_sequence: Sequence\",\n message.body as \"body: Body\",\n deleted.deleted_at as \"deleted_at?: DateTime\",\n deleted.deleted_sequence as \"deleted_sequence?: Sequence\"\n from message\n left join message_deleted as deleted\n using (id)\n where message.last_sequence > $1\n ",
+ "query": "\n select\n id as \"id: Id\",\n message.conversation as \"conversation: channel::Id\",\n message.sender as \"sender: user::Id\",\n message.sent_at as \"sent_at: DateTime\",\n message.sent_sequence as \"sent_sequence: Sequence\",\n message.body as \"body: Body\",\n deleted.deleted_at as \"deleted_at?: DateTime\",\n deleted.deleted_sequence as \"deleted_sequence?: Sequence\"\n from message\n left join message_deleted as deleted\n using (id)\n where message.last_sequence > $1\n ",
"describe": {
"columns": [
{
@@ -9,7 +9,7 @@
"type_info": "Text"
},
{
- "name": "channel: channel::Id",
+ "name": "conversation: channel::Id",
"ordinal": 1,
"type_info": "Text"
},
@@ -58,5 +58,5 @@
false
]
},
- "hash": "3ff8a089ca1c57111e8c0e8d6d9da73e88a6cab35ae511674d25aa78bac9bc04"
+ "hash": "0795c8c7f01f67cc05e1d0f750c807319b2c1d3069f9186ccaf722904310cf3d"
}
diff --git a/.sqlx/query-0e06b7b5aeb29b946ab79430dd7a65ab18430e7f71afde9af52e99767c1f268f.json b/.sqlx/query-0e06b7b5aeb29b946ab79430dd7a65ab18430e7f71afde9af52e99767c1f268f.json
new file mode 100644
index 0000000..befefa1
--- /dev/null
+++ b/.sqlx/query-0e06b7b5aeb29b946ab79430dd7a65ab18430e7f71afde9af52e99767c1f268f.json
@@ -0,0 +1,20 @@
+{
+ "db_name": "SQLite",
+ "query": "\n with has_messages as (\n select conversation\n from message\n group by conversation\n )\n delete from conversation_deleted\n where deleted_at < $1\n and id not in has_messages\n returning id as \"id: Id\"\n ",
+ "describe": {
+ "columns": [
+ {
+ "name": "id: Id",
+ "ordinal": 0,
+ "type_info": "Text"
+ }
+ ],
+ "parameters": {
+ "Right": 1
+ },
+ "nullable": [
+ false
+ ]
+ },
+ "hash": "0e06b7b5aeb29b946ab79430dd7a65ab18430e7f71afde9af52e99767c1f268f"
+}
diff --git a/.sqlx/query-1f0f35655dd57532897aaba9bde38547e626387dfe5b859f02ae1dbe171d5741.json b/.sqlx/query-1f0f35655dd57532897aaba9bde38547e626387dfe5b859f02ae1dbe171d5741.json
new file mode 100644
index 0000000..9c62ca9
--- /dev/null
+++ b/.sqlx/query-1f0f35655dd57532897aaba9bde38547e626387dfe5b859f02ae1dbe171d5741.json
@@ -0,0 +1,12 @@
+{
+ "db_name": "SQLite",
+ "query": "\n insert into conversation (id, created_at, created_sequence, last_sequence)\n values ($1, $2, $3, $4)\n ",
+ "describe": {
+ "columns": [],
+ "parameters": {
+ "Right": 4
+ },
+ "nullable": []
+ },
+ "hash": "1f0f35655dd57532897aaba9bde38547e626387dfe5b859f02ae1dbe171d5741"
+}
diff --git a/.sqlx/query-2773f12ef58c251596dd00f0bd048975fb06f090a11622cc74ced47a3d7ad44a.json b/.sqlx/query-2773f12ef58c251596dd00f0bd048975fb06f090a11622cc74ced47a3d7ad44a.json
deleted file mode 100644
index 2de9614..0000000
--- a/.sqlx/query-2773f12ef58c251596dd00f0bd048975fb06f090a11622cc74ced47a3d7ad44a.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "db_name": "SQLite",
- "query": "\n insert into channel_deleted (id, deleted_at, deleted_sequence)\n values ($1, $2, $3)\n ",
- "describe": {
- "columns": [],
- "parameters": {
- "Right": 3
- },
- "nullable": []
- },
- "hash": "2773f12ef58c251596dd00f0bd048975fb06f090a11622cc74ced47a3d7ad44a"
-}
diff --git a/.sqlx/query-454ca70caa83eee2dac585cf421524e41055cddf76dd4e4016142f61e0a4903f.json b/.sqlx/query-454ca70caa83eee2dac585cf421524e41055cddf76dd4e4016142f61e0a4903f.json
deleted file mode 100644
index ebddeb8..0000000
--- a/.sqlx/query-454ca70caa83eee2dac585cf421524e41055cddf76dd4e4016142f61e0a4903f.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "db_name": "SQLite",
- "query": "\n delete from channel_name\n where id = $1\n ",
- "describe": {
- "columns": [],
- "parameters": {
- "Right": 1
- },
- "nullable": []
- },
- "hash": "454ca70caa83eee2dac585cf421524e41055cddf76dd4e4016142f61e0a4903f"
-}
diff --git a/.sqlx/query-487092b18b01005fdb446c11f4726612141f7242decad1de5d9d5f166cb04990.json b/.sqlx/query-487092b18b01005fdb446c11f4726612141f7242decad1de5d9d5f166cb04990.json
deleted file mode 100644
index c919eb2..0000000
--- a/.sqlx/query-487092b18b01005fdb446c11f4726612141f7242decad1de5d9d5f166cb04990.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "db_name": "SQLite",
- "query": "\n with has_messages as (\n select channel\n from message\n group by channel\n )\n delete from channel_deleted\n where deleted_at < $1\n and id not in has_messages\n returning id as \"id: Id\"\n ",
- "describe": {
- "columns": [
- {
- "name": "id: Id",
- "ordinal": 0,
- "type_info": "Text"
- }
- ],
- "parameters": {
- "Right": 1
- },
- "nullable": [
- false
- ]
- },
- "hash": "487092b18b01005fdb446c11f4726612141f7242decad1de5d9d5f166cb04990"
-}
diff --git a/.sqlx/query-4c27c8f7ed9b6315433dc2b5f787a61d82693fe0426b46f9971fcde5e44f38b0.json b/.sqlx/query-4c27c8f7ed9b6315433dc2b5f787a61d82693fe0426b46f9971fcde5e44f38b0.json
deleted file mode 100644
index 8962098..0000000
--- a/.sqlx/query-4c27c8f7ed9b6315433dc2b5f787a61d82693fe0426b46f9971fcde5e44f38b0.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "db_name": "SQLite",
- "query": "\n insert into channel_name (id, display_name, canonical_name)\n values ($1, $2, $3)\n ",
- "describe": {
- "columns": [],
- "parameters": {
- "Right": 3
- },
- "nullable": []
- },
- "hash": "4c27c8f7ed9b6315433dc2b5f787a61d82693fe0426b46f9971fcde5e44f38b0"
-}
diff --git a/.sqlx/query-4e39f27605dec811824fddae5559dda60c4b2a9c6746376a3552ce73b7d8ea38.json b/.sqlx/query-4e39f27605dec811824fddae5559dda60c4b2a9c6746376a3552ce73b7d8ea38.json
deleted file mode 100644
index 902b216..0000000
--- a/.sqlx/query-4e39f27605dec811824fddae5559dda60c4b2a9c6746376a3552ce73b7d8ea38.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "db_name": "SQLite",
- "query": "\n update channel\n set last_sequence = max(last_sequence, $1)\n where id = $2\n returning id as \"id: Id\"\n ",
- "describe": {
- "columns": [
- {
- "name": "id: Id",
- "ordinal": 0,
- "type_info": "Text"
- }
- ],
- "parameters": {
- "Right": 2
- },
- "nullable": [
- false
- ]
- },
- "hash": "4e39f27605dec811824fddae5559dda60c4b2a9c6746376a3552ce73b7d8ea38"
-}
diff --git a/.sqlx/query-5ec47dd232a277d37e2f1a523cc4aadf757f55c6f44836e9c37b36e473ac2321.json b/.sqlx/query-5ec47dd232a277d37e2f1a523cc4aadf757f55c6f44836e9c37b36e473ac2321.json
new file mode 100644
index 0000000..aa3166d
--- /dev/null
+++ b/.sqlx/query-5ec47dd232a277d37e2f1a523cc4aadf757f55c6f44836e9c37b36e473ac2321.json
@@ -0,0 +1,12 @@
+{
+ "db_name": "SQLite",
+ "query": "\n insert into conversation_name (id, display_name, canonical_name)\n values ($1, $2, $3)\n ",
+ "describe": {
+ "columns": [],
+ "parameters": {
+ "Right": 3
+ },
+ "nullable": []
+ },
+ "hash": "5ec47dd232a277d37e2f1a523cc4aadf757f55c6f44836e9c37b36e473ac2321"
+}
diff --git a/.sqlx/query-66da54683caf3b003d20427290da9266cbd53de8761ea9ea58c4311ba78677a9.json b/.sqlx/query-66da54683caf3b003d20427290da9266cbd53de8761ea9ea58c4311ba78677a9.json
new file mode 100644
index 0000000..2869b91
--- /dev/null
+++ b/.sqlx/query-66da54683caf3b003d20427290da9266cbd53de8761ea9ea58c4311ba78677a9.json
@@ -0,0 +1,12 @@
+{
+ "db_name": "SQLite",
+ "query": "\n insert into conversation_deleted (id, deleted_at, deleted_sequence)\n values ($1, $2, $3)\n ",
+ "describe": {
+ "columns": [],
+ "parameters": {
+ "Right": 3
+ },
+ "nullable": []
+ },
+ "hash": "66da54683caf3b003d20427290da9266cbd53de8761ea9ea58c4311ba78677a9"
+}
diff --git a/.sqlx/query-6a767f2ad017fe3f56c4eb6060ea34dba0d4d325bc07fc882bea05abbae5414c.json b/.sqlx/query-6a767f2ad017fe3f56c4eb6060ea34dba0d4d325bc07fc882bea05abbae5414c.json
new file mode 100644
index 0000000..e15da37
--- /dev/null
+++ b/.sqlx/query-6a767f2ad017fe3f56c4eb6060ea34dba0d4d325bc07fc882bea05abbae5414c.json
@@ -0,0 +1,12 @@
+{
+ "db_name": "SQLite",
+ "query": "\n delete from conversation_name\n where id = $1\n ",
+ "describe": {
+ "columns": [],
+ "parameters": {
+ "Right": 1
+ },
+ "nullable": []
+ },
+ "hash": "6a767f2ad017fe3f56c4eb6060ea34dba0d4d325bc07fc882bea05abbae5414c"
+}
diff --git a/.sqlx/query-814400dfe985ef284db22c89d6e1a0eb2131b6581759a5028afb6a0910284803.json b/.sqlx/query-814400dfe985ef284db22c89d6e1a0eb2131b6581759a5028afb6a0910284803.json
deleted file mode 100644
index 4bcf6d0..0000000
--- a/.sqlx/query-814400dfe985ef284db22c89d6e1a0eb2131b6581759a5028afb6a0910284803.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "db_name": "SQLite",
- "query": "\n delete from channel\n where id = $1\n ",
- "describe": {
- "columns": [],
- "parameters": {
- "Right": 1
- },
- "nullable": []
- },
- "hash": "814400dfe985ef284db22c89d6e1a0eb2131b6581759a5028afb6a0910284803"
-}
diff --git a/.sqlx/query-85145c8b8264e7d01eef66e22353037f33fd3a3eaec0e36f06ffbbffb625aa24.json b/.sqlx/query-85145c8b8264e7d01eef66e22353037f33fd3a3eaec0e36f06ffbbffb625aa24.json
new file mode 100644
index 0000000..9d212fa
--- /dev/null
+++ b/.sqlx/query-85145c8b8264e7d01eef66e22353037f33fd3a3eaec0e36f06ffbbffb625aa24.json
@@ -0,0 +1,20 @@
+{
+ "db_name": "SQLite",
+ "query": "\n update conversation\n set last_sequence = max(last_sequence, $1)\n where id = $2\n returning id as \"id: Id\"\n ",
+ "describe": {
+ "columns": [
+ {
+ "name": "id: Id",
+ "ordinal": 0,
+ "type_info": "Text"
+ }
+ ],
+ "parameters": {
+ "Right": 2
+ },
+ "nullable": [
+ false
+ ]
+ },
+ "hash": "85145c8b8264e7d01eef66e22353037f33fd3a3eaec0e36f06ffbbffb625aa24"
+}
diff --git a/.sqlx/query-c44dbcc7f4c0257a991e1ae4a2679aaa4c3f28aa5436a9af067a754e46af5589.json b/.sqlx/query-927cc51fad82650938c68b8da423da82470585807b45622535cbe83cc35a10e8.json
index 37d685a..4d67f21 100644
--- a/.sqlx/query-c44dbcc7f4c0257a991e1ae4a2679aaa4c3f28aa5436a9af067a754e46af5589.json
+++ b/.sqlx/query-927cc51fad82650938c68b8da423da82470585807b45622535cbe83cc35a10e8.json
@@ -1,6 +1,6 @@
{
"db_name": "SQLite",
- "query": "\n select\n id as \"id: Id\",\n name.display_name as \"display_name?: String\",\n name.canonical_name as \"canonical_name?: String\",\n channel.created_at as \"created_at: DateTime\",\n channel.created_sequence as \"created_sequence: Sequence\",\n deleted.deleted_at as \"deleted_at?: DateTime\",\n deleted.deleted_sequence as \"deleted_sequence?: Sequence\"\n from channel\n left join channel_name as name\n using (id)\n left join channel_deleted as deleted\n using (id)\n where channel.last_sequence > $1\n ",
+ "query": "\n select\n id as \"id: Id\",\n name.display_name as \"display_name?: String\",\n name.canonical_name as \"canonical_name?: String\",\n conversation.created_at as \"created_at: DateTime\",\n conversation.created_sequence as \"created_sequence: Sequence\",\n deleted.deleted_at as \"deleted_at?: DateTime\",\n deleted.deleted_sequence as \"deleted_sequence?: Sequence\"\n from conversation\n left join conversation_name as name\n using (id)\n left join conversation_deleted as deleted\n using (id)\n where id = $1\n ",
"describe": {
"columns": [
{
@@ -52,5 +52,5 @@
false
]
},
- "hash": "c44dbcc7f4c0257a991e1ae4a2679aaa4c3f28aa5436a9af067a754e46af5589"
+ "hash": "927cc51fad82650938c68b8da423da82470585807b45622535cbe83cc35a10e8"
}
diff --git a/.sqlx/query-a4b34593fdf71bb911beb850cfa88adb346b1770e32785166bd43cb853143a7f.json b/.sqlx/query-a4b34593fdf71bb911beb850cfa88adb346b1770e32785166bd43cb853143a7f.json
deleted file mode 100644
index e886759..0000000
--- a/.sqlx/query-a4b34593fdf71bb911beb850cfa88adb346b1770e32785166bd43cb853143a7f.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- "db_name": "SQLite",
- "query": "\n select\n channel.id as \"id: Id\",\n name.display_name as \"display_name?: String\",\n name.canonical_name as \"canonical_name?: String\",\n channel.created_at as \"created_at: DateTime\",\n channel.created_sequence as \"created_sequence: Sequence\",\n deleted.deleted_at as \"deleted_at?: DateTime\",\n deleted.deleted_sequence as \"deleted_sequence?: Sequence\"\n from channel\n left join channel_name as name\n using (id)\n left join channel_deleted as deleted\n using (id)\n left join message\n on channel.id = message.channel\n where channel.created_at < $1\n and message.id is null\n and deleted.id is null\n ",
- "describe": {
- "columns": [
- {
- "name": "id: Id",
- "ordinal": 0,
- "type_info": "Text"
- },
- {
- "name": "display_name?: String",
- "ordinal": 1,
- "type_info": "Null"
- },
- {
- "name": "canonical_name?: String",
- "ordinal": 2,
- "type_info": "Null"
- },
- {
- "name": "created_at: DateTime",
- "ordinal": 3,
- "type_info": "Text"
- },
- {
- "name": "created_sequence: Sequence",
- "ordinal": 4,
- "type_info": "Integer"
- },
- {
- "name": "deleted_at?: DateTime",
- "ordinal": 5,
- "type_info": "Text"
- },
- {
- "name": "deleted_sequence?: Sequence",
- "ordinal": 6,
- "type_info": "Integer"
- }
- ],
- "parameters": {
- "Right": 1
- },
- "nullable": [
- false,
- false,
- false,
- false,
- false,
- false,
- false
- ]
- },
- "hash": "a4b34593fdf71bb911beb850cfa88adb346b1770e32785166bd43cb853143a7f"
-}
diff --git a/.sqlx/query-b18432e78891ffca0d7f3fcd1c543db4a3f02c211462704f7810fdbed924ac30.json b/.sqlx/query-a781f6b9ab38ade2a0b15d665e297e9ff65546b87e6667ad68bbc162a3e464c4.json
index 3ae7605..7e4a102 100644
--- a/.sqlx/query-b18432e78891ffca0d7f3fcd1c543db4a3f02c211462704f7810fdbed924ac30.json
+++ b/.sqlx/query-a781f6b9ab38ade2a0b15d665e297e9ff65546b87e6667ad68bbc162a3e464c4.json
@@ -1,10 +1,10 @@
{
"db_name": "SQLite",
- "query": "\n select\n message.channel as \"channel: channel::Id\",\n message.sender as \"sender: user::Id\",\n message.id as \"id: Id\",\n message.body as \"body: Body\",\n message.sent_at as \"sent_at: DateTime\",\n message.sent_sequence as \"sent_sequence: Sequence\",\n deleted.deleted_at as \"deleted_at?: DateTime\",\n deleted.deleted_sequence as \"deleted_sequence?: Sequence\"\n from message\n left join message_deleted as deleted\n using (id)\n where message.sent_sequence <= $1\n order by message.sent_sequence\n ",
+ "query": "\n select\n message.conversation as \"conversation: channel::Id\",\n message.sender as \"sender: user::Id\",\n message.id as \"id: Id\",\n message.body as \"body: Body\",\n message.sent_at as \"sent_at: DateTime\",\n message.sent_sequence as \"sent_sequence: Sequence\",\n deleted.deleted_at as \"deleted_at?: DateTime\",\n deleted.deleted_sequence as \"deleted_sequence?: Sequence\"\n from message\n left join message_deleted as deleted\n using (id)\n where message.sent_sequence <= $1\n order by message.sent_sequence\n ",
"describe": {
"columns": [
{
- "name": "channel: channel::Id",
+ "name": "conversation: channel::Id",
"ordinal": 0,
"type_info": "Text"
},
@@ -58,5 +58,5 @@
false
]
},
- "hash": "b18432e78891ffca0d7f3fcd1c543db4a3f02c211462704f7810fdbed924ac30"
+ "hash": "a781f6b9ab38ade2a0b15d665e297e9ff65546b87e6667ad68bbc162a3e464c4"
}
diff --git a/.sqlx/query-17f6f507d9343a734e1098f6ce56d372edeb35f92769a0181a71d68a68780649.json b/.sqlx/query-c4f0bbdcfdd1d88def0f19f69141a2e9dd3efaa0f1911765e73d1c00b34ddbaa.json
index 0e67b03..c4cb21b 100644
--- a/.sqlx/query-17f6f507d9343a734e1098f6ce56d372edeb35f92769a0181a71d68a68780649.json
+++ b/.sqlx/query-c4f0bbdcfdd1d88def0f19f69141a2e9dd3efaa0f1911765e73d1c00b34ddbaa.json
@@ -1,10 +1,10 @@
{
"db_name": "SQLite",
- "query": "\n select\n message.channel as \"channel: channel::Id\",\n message.sender as \"sender: user::Id\",\n id as \"id: Id\",\n message.body as \"body: Body\",\n message.sent_at as \"sent_at: DateTime\",\n message.sent_sequence as \"sent_sequence: Sequence\",\n deleted.deleted_at as \"deleted_at?: DateTime\",\n deleted.deleted_sequence as \"deleted_sequence?: Sequence\"\n from message\n left join message_deleted as deleted\n using (id)\n where message.channel = $1\n and deleted.id is null\n ",
+ "query": "\n select\n message.conversation as \"conversation: channel::Id\",\n message.sender as \"sender: user::Id\",\n id as \"id: Id\",\n message.body as \"body: Body\",\n message.sent_at as \"sent_at: DateTime\",\n message.sent_sequence as \"sent_sequence: Sequence\",\n deleted.deleted_at as \"deleted_at?: DateTime\",\n deleted.deleted_sequence as \"deleted_sequence?: Sequence\"\n from message\n left join message_deleted as deleted\n using (id)\n where message.conversation = $1\n and deleted.id is null\n ",
"describe": {
"columns": [
{
- "name": "channel: channel::Id",
+ "name": "conversation: channel::Id",
"ordinal": 0,
"type_info": "Text"
},
@@ -58,5 +58,5 @@
false
]
},
- "hash": "17f6f507d9343a734e1098f6ce56d372edeb35f92769a0181a71d68a68780649"
+ "hash": "c4f0bbdcfdd1d88def0f19f69141a2e9dd3efaa0f1911765e73d1c00b34ddbaa"
}
diff --git a/.sqlx/query-e36d7cd00f040807c3994b5010f2f77b943ec225244fcfc24013b12a48084a1e.json b/.sqlx/query-c960562be5b34678c305895cc4aaa6d96ad25184042ea1f989499285d41400f8.json
index 6700c43..427962a 100644
--- a/.sqlx/query-e36d7cd00f040807c3994b5010f2f77b943ec225244fcfc24013b12a48084a1e.json
+++ b/.sqlx/query-c960562be5b34678c305895cc4aaa6d96ad25184042ea1f989499285d41400f8.json
@@ -1,6 +1,6 @@
{
"db_name": "SQLite",
- "query": "\n select\n id as \"id: Id\",\n name.display_name as \"display_name?: String\",\n name.canonical_name as \"canonical_name?: String\",\n channel.created_at as \"created_at: DateTime\",\n channel.created_sequence as \"created_sequence: Sequence\",\n deleted.deleted_at as \"deleted_at?: DateTime\",\n deleted.deleted_sequence as \"deleted_sequence?: Sequence\"\n from channel\n left join channel_name as name\n using (id)\n left join channel_deleted as deleted\n using (id)\n where id = $1\n ",
+ "query": "\n select\n id as \"id: Id\",\n name.display_name as \"display_name?: String\",\n name.canonical_name as \"canonical_name?: String\",\n conversation.created_at as \"created_at: DateTime\",\n conversation.created_sequence as \"created_sequence: Sequence\",\n deleted.deleted_at as \"deleted_at?: DateTime\",\n deleted.deleted_sequence as \"deleted_sequence?: Sequence\"\n from conversation\n left join conversation_name as name\n using (id)\n left join conversation_deleted as deleted\n using (id)\n where conversation.last_sequence > $1\n ",
"describe": {
"columns": [
{
@@ -52,5 +52,5 @@
false
]
},
- "hash": "e36d7cd00f040807c3994b5010f2f77b943ec225244fcfc24013b12a48084a1e"
+ "hash": "c960562be5b34678c305895cc4aaa6d96ad25184042ea1f989499285d41400f8"
}
diff --git a/.sqlx/query-ca9146e92c3b3e724f4b58ad72529de7030a4863d3bf479bb19a6a2a76d1590b.json b/.sqlx/query-ca9146e92c3b3e724f4b58ad72529de7030a4863d3bf479bb19a6a2a76d1590b.json
deleted file mode 100644
index 0118249..0000000
--- a/.sqlx/query-ca9146e92c3b3e724f4b58ad72529de7030a4863d3bf479bb19a6a2a76d1590b.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "db_name": "SQLite",
- "query": "\n insert\n into channel (id, created_at, created_sequence, last_sequence)\n values ($1, $2, $3, $4)\n ",
- "describe": {
- "columns": [],
- "parameters": {
- "Right": 4
- },
- "nullable": []
- },
- "hash": "ca9146e92c3b3e724f4b58ad72529de7030a4863d3bf479bb19a6a2a76d1590b"
-}
diff --git a/.sqlx/query-cf24c0d42c7e5bdc16a7925544d2057667955e468d1b6683a89d45d6ce58166f.json b/.sqlx/query-cf24c0d42c7e5bdc16a7925544d2057667955e468d1b6683a89d45d6ce58166f.json
new file mode 100644
index 0000000..c32961b
--- /dev/null
+++ b/.sqlx/query-cf24c0d42c7e5bdc16a7925544d2057667955e468d1b6683a89d45d6ce58166f.json
@@ -0,0 +1,56 @@
+{
+ "db_name": "SQLite",
+ "query": "\n select\n conversation.id as \"id: Id\",\n name.display_name as \"display_name?: String\",\n name.canonical_name as \"canonical_name?: String\",\n conversation.created_at as \"created_at: DateTime\",\n conversation.created_sequence as \"created_sequence: Sequence\",\n deleted.deleted_at as \"deleted_at?: DateTime\",\n deleted.deleted_sequence as \"deleted_sequence?: Sequence\"\n from conversation\n left join conversation_name as name\n using (id)\n left join conversation_deleted as deleted\n using (id)\n left join message\n on conversation.id = message.conversation\n where conversation.created_at < $1\n and message.id is null\n and deleted.id is null\n ",
+ "describe": {
+ "columns": [
+ {
+ "name": "id: Id",
+ "ordinal": 0,
+ "type_info": "Text"
+ },
+ {
+ "name": "display_name?: String",
+ "ordinal": 1,
+ "type_info": "Null"
+ },
+ {
+ "name": "canonical_name?: String",
+ "ordinal": 2,
+ "type_info": "Null"
+ },
+ {
+ "name": "created_at: DateTime",
+ "ordinal": 3,
+ "type_info": "Text"
+ },
+ {
+ "name": "created_sequence: Sequence",
+ "ordinal": 4,
+ "type_info": "Integer"
+ },
+ {
+ "name": "deleted_at?: DateTime",
+ "ordinal": 5,
+ "type_info": "Text"
+ },
+ {
+ "name": "deleted_sequence?: Sequence",
+ "ordinal": 6,
+ "type_info": "Integer"
+ }
+ ],
+ "parameters": {
+ "Right": 1
+ },
+ "nullable": [
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ "hash": "cf24c0d42c7e5bdc16a7925544d2057667955e468d1b6683a89d45d6ce58166f"
+}
diff --git a/.sqlx/query-dfb54b7d586cc99b9e03cb08727b5af8d0b95fc30797dadcc0eb98f12667f14e.json b/.sqlx/query-dfb54b7d586cc99b9e03cb08727b5af8d0b95fc30797dadcc0eb98f12667f14e.json
new file mode 100644
index 0000000..bfbdef6
--- /dev/null
+++ b/.sqlx/query-dfb54b7d586cc99b9e03cb08727b5af8d0b95fc30797dadcc0eb98f12667f14e.json
@@ -0,0 +1,12 @@
+{
+ "db_name": "SQLite",
+ "query": "\n delete from conversation\n where id = $1\n ",
+ "describe": {
+ "columns": [],
+ "parameters": {
+ "Right": 1
+ },
+ "nullable": []
+ },
+ "hash": "dfb54b7d586cc99b9e03cb08727b5af8d0b95fc30797dadcc0eb98f12667f14e"
+}
diff --git a/.sqlx/query-ad1485f0a5514bcfaf68477723ae0f13e93a1f18213e208d3a181936a36da5fb.json b/.sqlx/query-e2cc4ef6af56e6ac1fcf2353fb52cdf99a84c160cf1fc2bd1e889c4c6fff59ea.json
index ce757ba..97dde44 100644
--- a/.sqlx/query-ad1485f0a5514bcfaf68477723ae0f13e93a1f18213e208d3a181936a36da5fb.json
+++ b/.sqlx/query-e2cc4ef6af56e6ac1fcf2353fb52cdf99a84c160cf1fc2bd1e889c4c6fff59ea.json
@@ -1,6 +1,6 @@
{
"db_name": "SQLite",
- "query": "\n select\n id as \"id: Id\",\n name.display_name as \"display_name?: String\",\n name.canonical_name as \"canonical_name?: String\",\n channel.created_at as \"created_at: DateTime\",\n channel.created_sequence as \"created_sequence: Sequence\",\n deleted.deleted_at as \"deleted_at?: DateTime\",\n deleted.deleted_sequence as \"deleted_sequence?: Sequence\"\n from channel\n left join channel_name as name\n using (id)\n left join channel_deleted as deleted\n using (id)\n where channel.created_sequence <= $1\n order by name.canonical_name\n ",
+ "query": "\n select\n id as \"id: Id\",\n name.display_name as \"display_name?: String\",\n name.canonical_name as \"canonical_name?: String\",\n conversation.created_at as \"created_at: DateTime\",\n conversation.created_sequence as \"created_sequence: Sequence\",\n deleted.deleted_at as \"deleted_at?: DateTime\",\n deleted.deleted_sequence as \"deleted_sequence?: Sequence\"\n from conversation\n left join conversation_name as name\n using (id)\n left join conversation_deleted as deleted\n using (id)\n where conversation.created_sequence <= $1\n order by name.canonical_name\n ",
"describe": {
"columns": [
{
@@ -52,5 +52,5 @@
false
]
},
- "hash": "ad1485f0a5514bcfaf68477723ae0f13e93a1f18213e208d3a181936a36da5fb"
+ "hash": "e2cc4ef6af56e6ac1fcf2353fb52cdf99a84c160cf1fc2bd1e889c4c6fff59ea"
}
diff --git a/.sqlx/query-fb7114754c6dc8ffe623ae0f3f61ec2e20795692db7019d962378c740ae69599.json b/.sqlx/query-e9689d49d357b1df287bc2487bd9d1179bbf8c33398ee7b9af2ea265c4b6539c.json
index 7f1e1f3..35dbbe3 100644
--- a/.sqlx/query-fb7114754c6dc8ffe623ae0f3f61ec2e20795692db7019d962378c740ae69599.json
+++ b/.sqlx/query-e9689d49d357b1df287bc2487bd9d1179bbf8c33398ee7b9af2ea265c4b6539c.json
@@ -1,10 +1,10 @@
{
"db_name": "SQLite",
- "query": "\n select\n message.channel as \"channel: channel::Id\",\n message.sender as \"sender: user::Id\",\n id as \"id: Id\",\n message.body as \"body: Body\",\n message.sent_at as \"sent_at: DateTime\",\n message.sent_sequence as \"sent_sequence: Sequence\",\n deleted.deleted_at as \"deleted_at?: DateTime\",\n deleted.deleted_sequence as \"deleted_sequence?: Sequence\"\n from message\n left join message_deleted as deleted\n using (id)\n where id = $1\n ",
+ "query": "\n select\n message.conversation as \"conversation: channel::Id\",\n message.sender as \"sender: user::Id\",\n id as \"id: Id\",\n message.body as \"body: Body\",\n message.sent_at as \"sent_at: DateTime\",\n message.sent_sequence as \"sent_sequence: Sequence\",\n deleted.deleted_at as \"deleted_at?: DateTime\",\n deleted.deleted_sequence as \"deleted_sequence?: Sequence\"\n from message\n left join message_deleted as deleted\n using (id)\n where id = $1\n ",
"describe": {
"columns": [
{
- "name": "channel: channel::Id",
+ "name": "conversation: channel::Id",
"ordinal": 0,
"type_info": "Text"
},
@@ -58,5 +58,5 @@
false
]
},
- "hash": "fb7114754c6dc8ffe623ae0f3f61ec2e20795692db7019d962378c740ae69599"
+ "hash": "e9689d49d357b1df287bc2487bd9d1179bbf8c33398ee7b9af2ea265c4b6539c"
}
diff --git a/.sqlx/query-3d0354407ac4dcd7b012328b9086c4f582bd2b3dc99a6a8e5f4853e0d4c43c50.json b/.sqlx/query-f796c7c4d16a7bda355c5cbff7f0c48a70d61597e2f284bf29771a9c3c2615a9.json
index 0481b7b..f194250 100644
--- a/.sqlx/query-3d0354407ac4dcd7b012328b9086c4f582bd2b3dc99a6a8e5f4853e0d4c43c50.json
+++ b/.sqlx/query-f796c7c4d16a7bda355c5cbff7f0c48a70d61597e2f284bf29771a9c3c2615a9.json
@@ -1,6 +1,6 @@
{
"db_name": "SQLite",
- "query": "\n select\n id as \"id: Id\",\n message.channel as \"channel: channel::Id\",\n message.sender as \"sender: user::Id\",\n message.sent_at as \"sent_at: DateTime\",\n message.sent_sequence as \"sent_sequence: Sequence\",\n message.body as \"body: Body\",\n deleted.deleted_at as \"deleted_at?: DateTime\",\n deleted.deleted_sequence as \"deleted_sequence?: Sequence\"\n from message\n left join message_deleted as deleted\n using (id)\n where message.sent_at < $1\n and deleted.id is null\n ",
+ "query": "\n select\n id as \"id: Id\",\n message.conversation as \"conversation: channel::Id\",\n message.sender as \"sender: user::Id\",\n message.sent_at as \"sent_at: DateTime\",\n message.sent_sequence as \"sent_sequence: Sequence\",\n message.body as \"body: Body\",\n deleted.deleted_at as \"deleted_at?: DateTime\",\n deleted.deleted_sequence as \"deleted_sequence?: Sequence\"\n from message\n left join message_deleted as deleted\n using (id)\n where message.sent_at < $1\n and deleted.id is null\n ",
"describe": {
"columns": [
{
@@ -9,7 +9,7 @@
"type_info": "Text"
},
{
- "name": "channel: channel::Id",
+ "name": "conversation: channel::Id",
"ordinal": 1,
"type_info": "Text"
},
@@ -58,5 +58,5 @@
false
]
},
- "hash": "3d0354407ac4dcd7b012328b9086c4f582bd2b3dc99a6a8e5f4853e0d4c43c50"
+ "hash": "f796c7c4d16a7bda355c5cbff7f0c48a70d61597e2f284bf29771a9c3c2615a9"
}
diff --git a/migrations/20250624003106_rename_channel_to_conversation.sql b/migrations/20250624003106_rename_channel_to_conversation.sql
new file mode 100644
index 0000000..753d42b
--- /dev/null
+++ b/migrations/20250624003106_rename_channel_to_conversation.sql
@@ -0,0 +1,153 @@
+alter table message
+ rename to old_message;
+
+alter table message_deleted
+ rename to old_message_deleted;
+
+create table conversation (
+ id text
+ not null
+ primary key,
+ created_sequence bigint
+ unique
+ not null,
+ created_at text
+ not null,
+ last_sequence bigint
+ not null
+);
+
+insert into
+ conversation (id, created_sequence, created_at, last_sequence)
+select
+ id,
+ created_sequence,
+ created_at,
+ last_sequence
+from
+ channel;
+
+create table conversation_name (
+ id text
+ not null
+ primary key
+ references conversation (id),
+ display_name
+ not null,
+ canonical_name
+ not null
+ unique
+);
+
+insert into
+ conversation_name (id, display_name, canonical_name)
+select
+ id,
+ display_name,
+ canonical_name
+from
+ channel_name;
+
+create table conversation_deleted (
+ id text
+ not null
+ primary key
+ references conversation (id),
+ deleted_sequence bigint
+ unique
+ not null,
+ deleted_at text
+ not null
+);
+
+insert into
+ conversation_deleted (id, deleted_sequence, deleted_at)
+select
+ id,
+ deleted_sequence,
+ deleted_at
+from
+ channel_deleted;
+
+create table message (
+ id text
+ not null
+ primary key,
+ conversation text
+ not null
+ references conversation (id),
+ sender text
+ not null
+ references user (id),
+ sent_sequence bigint
+ unique
+ not null,
+ sent_at text
+ not null,
+ body text
+ null,
+ last_sequence bigint
+ not null
+);
+
+insert into
+ message (id, conversation, sender, sent_sequence, sent_at, body, last_sequence)
+select
+ id,
+ channel,
+ sender,
+ sent_sequence,
+ sent_at,
+ body,
+ last_sequence
+from
+ old_message;
+
+create table message_deleted (
+ id text
+ not null
+ primary key
+ references message (id),
+ deleted_sequence bigint
+ unique
+ not null,
+ deleted_at text
+ not null
+
+);
+
+insert into
+ message_deleted (id, deleted_sequence, deleted_at)
+select
+ id,
+ deleted_sequence,
+ deleted_at
+from
+ old_message_deleted;
+
+drop table old_message_deleted;
+drop table old_message;
+drop table channel_deleted;
+drop table channel_name;
+drop table channel;
+
+create index conversation_created_sequence
+ on conversation (created_sequence);
+
+create index conversation_created_at
+ on conversation (created_at);
+
+create index conversation_last_sequence
+ on conversation (last_sequence);
+
+create index message_deleted_deleted_at
+ on message_deleted (deleted_at);
+
+create index message_sent_at
+ on message (sent_at);
+
+create index message_conversation
+ on message (conversation);
+
+create index message_last_sequence
+ on message (last_sequence);
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
"#,
diff --git a/src/message/repo.rs b/src/message/repo.rs
index e753134..159ce8e 100644
--- a/src/message/repo.rs
+++ b/src/message/repo.rs
@@ -33,11 +33,11 @@ impl Messages<'_> {
let message = sqlx::query!(
r#"
insert into message
- (id, channel, sender, sent_at, sent_sequence, body, last_sequence)
+ (id, conversation, sender, sent_at, sent_sequence, body, last_sequence)
values ($1, $2, $3, $4, $5, $6, $7)
returning
id as "id: Id",
- channel as "channel: channel::Id",
+ conversation as "conversation: channel::Id",
sender as "sender: user::Id",
sent_at as "sent_at: DateTime",
sent_sequence as "sent_sequence: Sequence",
@@ -54,7 +54,7 @@ impl Messages<'_> {
.map(|row| History {
message: Message {
sent: Instant::new(row.sent_at, row.sent_sequence),
- channel: row.channel,
+ channel: row.conversation,
sender: row.sender,
id: row.id,
body: row.body.unwrap_or_default(),
@@ -73,7 +73,7 @@ impl Messages<'_> {
let messages = sqlx::query!(
r#"
select
- message.channel as "channel: channel::Id",
+ message.conversation as "conversation: channel::Id",
message.sender as "sender: user::Id",
id as "id: Id",
message.body as "body: Body",
@@ -84,7 +84,7 @@ impl Messages<'_> {
from message
left join message_deleted as deleted
using (id)
- where message.channel = $1
+ where message.conversation = $1
and deleted.id is null
"#,
channel_id,
@@ -92,7 +92,7 @@ impl Messages<'_> {
.map(|row| History {
message: Message {
sent: Instant::new(row.sent_at, row.sent_sequence),
- channel: row.channel,
+ channel: row.conversation,
sender: row.sender,
id: row.id,
body: row.body.unwrap_or_default(),
@@ -110,7 +110,7 @@ impl Messages<'_> {
let messages = sqlx::query!(
r#"
select
- message.channel as "channel: channel::Id",
+ message.conversation as "conversation: channel::Id",
message.sender as "sender: user::Id",
message.id as "id: Id",
message.body as "body: Body",
@@ -129,7 +129,7 @@ impl Messages<'_> {
.map(|row| History {
message: Message {
sent: Instant::new(row.sent_at, row.sent_sequence),
- channel: row.channel,
+ channel: row.conversation,
sender: row.sender,
id: row.id,
body: row.body.unwrap_or_default(),
@@ -147,7 +147,7 @@ impl Messages<'_> {
let message = sqlx::query!(
r#"
select
- message.channel as "channel: channel::Id",
+ message.conversation as "conversation: channel::Id",
message.sender as "sender: user::Id",
id as "id: Id",
message.body as "body: Body",
@@ -165,7 +165,7 @@ impl Messages<'_> {
.map(|row| History {
message: Message {
sent: Instant::new(row.sent_at, row.sent_sequence),
- channel: row.channel,
+ channel: row.conversation,
sender: row.sender,
id: row.id,
body: row.body.unwrap_or_default(),
@@ -252,7 +252,7 @@ impl Messages<'_> {
r#"
select
id as "id: Id",
- message.channel as "channel: channel::Id",
+ message.conversation as "conversation: channel::Id",
message.sender as "sender: user::Id",
message.sent_at as "sent_at: DateTime",
message.sent_sequence as "sent_sequence: Sequence",
@@ -271,7 +271,7 @@ impl Messages<'_> {
message: Message {
sent: Instant::new(row.sent_at, row.sent_sequence),
id: row.id,
- channel: row.channel,
+ channel: row.conversation,
sender: row.sender,
body: row.body.unwrap_or_default(),
deleted_at: row.deleted_at,
@@ -289,7 +289,7 @@ impl Messages<'_> {
r#"
select
id as "id: Id",
- message.channel as "channel: channel::Id",
+ message.conversation as "conversation: channel::Id",
message.sender as "sender: user::Id",
message.sent_at as "sent_at: DateTime",
message.sent_sequence as "sent_sequence: Sequence",
@@ -306,7 +306,7 @@ impl Messages<'_> {
.map(|row| History {
message: Message {
sent: Instant::new(row.sent_at, row.sent_sequence),
- channel: row.channel,
+ channel: row.conversation,
sender: row.sender,
id: row.id,
body: row.body.unwrap_or_default(),