summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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(),