summaryrefslogtreecommitdiff
path: root/.sqlx
diff options
context:
space:
mode:
authorOwen Jacobson <owen@grimoire.ca>2024-10-17 01:45:58 -0400
committerOwen Jacobson <owen@grimoire.ca>2024-10-17 02:03:14 -0400
commit777e4281431a036eb663b5eec70f347b7425737d (patch)
treeeeb9ad74c6b706db3bad146e136067c51ff7e4b0 /.sqlx
parentea74daca4809e4008dd8d01039db9fff3be659d9 (diff)
Retain deleted messages and channels temporarily, to preserve events for replay.
Previously, when a channel (message) was deleted, `hi` would send events to all _connected_ clients to inform them of the deletion, then delete all memory of the channel (message). Any disconnected client, on reconnecting, would not receive the deletion event, and would de-synch with the service. The creation events were also immediately retconned out of the event stream, as well. With this change, `hi` keeps a record of deleted channels (messages). When replaying events, these records are used to replay the deletion event. After 7 days, the retained data is deleted, both to keep storage under control and to conform to users' expectations that deleted means gone. To match users' likely intuitions about what deletion does, deleting a channel (message) _does_ immediately delete some of its associated data. Channels' names are blanked, and messages' bodies are also blanked. When the event stream is replayed, the original channel.created (message.sent) event is "tombstoned", with an additional `deleted_at` field to inform clients. The included client does not use this field, at least yet. The migration is, once again, screamingingly complicated due to sqlite's limited ALTER TABLE … ALTER COLUMN support. This change also contains capabilities that would allow the API to return 410 Gone for deleted channels or messages, instead of 404. I did experiment with this, but it's tricky to do pervasively, especially since most app-level interfaces return an `Option<Channel>` or `Option<Message>`. Redesigning these to return either `Ok(Channel)` (`Ok(Message)`) or `Err(Error::NotFound)` or `Err(Error::Deleted)` is more work than I wanted to take on for this change, and the utility of 410 Gone responses is not obvious to me. We have other, more pressing API design warts to address.
Diffstat (limited to '.sqlx')
-rw-r--r--.sqlx/query-15ec7a8aa11908f8b2022accdde2e9e4a49e52e74c3d0e28e82a0b01a3c9887f.json20
-rw-r--r--.sqlx/query-1654b05159c27f74cb333586018161718e2a6788413bffffb252de3e1959f341.json38
-rw-r--r--.sqlx/query-191255b9e55c9b36d0fd047e56e515d121964d3481e48aae3558b53a5123ce7d.json50
-rw-r--r--.sqlx/query-2252b49c77ff76a88ee7d24a4d68d68c8d9f8b9483af48de5d4e09857181d632.json20
-rw-r--r--.sqlx/query-33f9a143409e6f436ed6b64abfbb9e06a5889460743202ca7956acabf006843e.json20
-rw-r--r--.sqlx/query-400de8e1dca27c48362b060c5b16e9ae908c4ea30e2d682d59d4720699b8de91.json62
-rw-r--r--.sqlx/query-487092b18b01005fdb446c11f4726612141f7242decad1de5d9d5f166cb04990.json20
-rw-r--r--.sqlx/query-58c17422db7edd8f0462378da75962b278d8191f77ffdea8dad8441f2bf72786.json12
-rw-r--r--.sqlx/query-6c82af3b136a6719d52f49767190eeaaf479b458c18f79ff62c46b7aac158a77.json62
-rw-r--r--.sqlx/query-771d1afa5961bae86112a51fc629c8edba240926d21fbe03d884e2a48b034336.json50
-rw-r--r--.sqlx/query-814400dfe985ef284db22c89d6e1a0eb2131b6581759a5028afb6a0910284803.json12
-rw-r--r--.sqlx/query-8d9b83fb53e4191ee58b68e65e101d0941f2a266679209f793fd27466b9e3719.json50
-rw-r--r--.sqlx/query-8eebba45e8267b9eebc7b1ae7e18ecb51d54d1e304dcbd847de145c0c75423a7.json20
-rw-r--r--.sqlx/query-9386cdaa2cb41f5a7e19d2fc8c187294a4661c18c2d820f4379dfd82138a8f77.json38
-rw-r--r--.sqlx/query-9f83f0365b174ce61adb6d48f3b75adcb3ddf8a88439aa8ddb0c66be2f0b384e.json50
-rw-r--r--.sqlx/query-afe4404b44bd8ce6c9a51aafabe3524caa9882d0cba0dc4359eb62cf8154c92d.json50
-rw-r--r--.sqlx/query-b1ba724a62135a6fbcb7ad314ba09dbe4e42fd49b2007e47bcfb07b5ba9001b0.json20
-rw-r--r--.sqlx/query-b7e05e2b2eb5484c954bcedf5de8c7d9ad11bb09a0d0d243181d97c79d771071.json20
-rw-r--r--.sqlx/query-bddc3b0d75f6048c36630db3abb8945a49ce18fb715d249bc9d93fc7d10e817d.json62
-rw-r--r--.sqlx/query-c90cbe4c836adf7f104b7b6a6a72a129f9484b4d9b9e62e7c546d965cdde721a.json62
-rw-r--r--.sqlx/query-cda3a4a974eb986ebe26838143f6b5d16dbeb19ad13ac36dcb40851f0af238e8.json38
-rw-r--r--.sqlx/query-d6feb736b61c645649082e55c7cf413825151e1cda939378984611dc2d9a789a.json20
-rw-r--r--.sqlx/query-e2686f26f8646b4cd31beeb2060b9a6d6e0bbcb4cf8d01c48b297e6f0a950ebc.json50
-rw-r--r--.sqlx/query-e476c3fb3f2227b7421ad2075d18b090751a345ac2e90bb8c116e0fbb5dfbb99.json50
-rw-r--r--.sqlx/query-e621d064ba52cd13b196bce32c2cc4f93832948768dcbd1d12abcdbc5089ca8e.json50
-rw-r--r--.sqlx/query-e702a0e7ff9a0a9808f8d45294ae908114b03719dc0cb237cec11f807bf757b1.json62
-rw-r--r--.sqlx/query-ea5d8528095f8885b7e31687ec44bfea55ae259cc5fd412bdc30881b98ed12f8.json20
-rw-r--r--.sqlx/query-f3a338b9e4a65856decd79ad2d2dec42949522f182a61bfb249f13ee78564179.json20
-rw-r--r--.sqlx/query-f511d351018c908bf303ae20ac429b55db93ceb5ce501917188e7b2f14975f34.json12
-rw-r--r--.sqlx/query-f6909336ab05b7ad423c7b96a0e7b12a920f9827aff2b05ee0364ff7688a38ae.json38
30 files changed, 686 insertions, 412 deletions
diff --git a/.sqlx/query-15ec7a8aa11908f8b2022accdde2e9e4a49e52e74c3d0e28e82a0b01a3c9887f.json b/.sqlx/query-15ec7a8aa11908f8b2022accdde2e9e4a49e52e74c3d0e28e82a0b01a3c9887f.json
new file mode 100644
index 0000000..167e768
--- /dev/null
+++ b/.sqlx/query-15ec7a8aa11908f8b2022accdde2e9e4a49e52e74c3d0e28e82a0b01a3c9887f.json
@@ -0,0 +1,20 @@
+{
+ "db_name": "SQLite",
+ "query": "\n insert into message_deleted (id, deleted_at, deleted_sequence)\n values ($1, $2, $3)\n returning 1 as \"deleted: bool\"\n ",
+ "describe": {
+ "columns": [
+ {
+ "name": "deleted: bool",
+ "ordinal": 0,
+ "type_info": "Null"
+ }
+ ],
+ "parameters": {
+ "Right": 3
+ },
+ "nullable": [
+ null
+ ]
+ },
+ "hash": "15ec7a8aa11908f8b2022accdde2e9e4a49e52e74c3d0e28e82a0b01a3c9887f"
+}
diff --git a/.sqlx/query-1654b05159c27f74cb333586018161718e2a6788413bffffb252de3e1959f341.json b/.sqlx/query-1654b05159c27f74cb333586018161718e2a6788413bffffb252de3e1959f341.json
deleted file mode 100644
index cc716ed..0000000
--- a/.sqlx/query-1654b05159c27f74cb333586018161718e2a6788413bffffb252de3e1959f341.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "db_name": "SQLite",
- "query": "\n delete from channel\n where id = $1\n returning\n id as \"id: Id\",\n name,\n created_at as \"created_at: DateTime\",\n created_sequence as \"created_sequence: Sequence\"\n ",
- "describe": {
- "columns": [
- {
- "name": "id: Id",
- "ordinal": 0,
- "type_info": "Text"
- },
- {
- "name": "name",
- "ordinal": 1,
- "type_info": "Text"
- },
- {
- "name": "created_at: DateTime",
- "ordinal": 2,
- "type_info": "Text"
- },
- {
- "name": "created_sequence: Sequence",
- "ordinal": 3,
- "type_info": "Integer"
- }
- ],
- "parameters": {
- "Right": 1
- },
- "nullable": [
- false,
- false,
- false,
- false
- ]
- },
- "hash": "1654b05159c27f74cb333586018161718e2a6788413bffffb252de3e1959f341"
-}
diff --git a/.sqlx/query-191255b9e55c9b36d0fd047e56e515d121964d3481e48aae3558b53a5123ce7d.json b/.sqlx/query-191255b9e55c9b36d0fd047e56e515d121964d3481e48aae3558b53a5123ce7d.json
deleted file mode 100644
index fe443f9..0000000
--- a/.sqlx/query-191255b9e55c9b36d0fd047e56e515d121964d3481e48aae3558b53a5123ce7d.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
- "db_name": "SQLite",
- "query": "\n select\n channel as \"channel: channel::Id\",\n sender as \"sender: login::Id\",\n id as \"id: Id\",\n body,\n sent_at as \"sent_at: DateTime\",\n sent_sequence as \"sent_sequence: Sequence\"\n from message\n where coalesce(sent_sequence <= $2, true)\n order by sent_sequence\n ",
- "describe": {
- "columns": [
- {
- "name": "channel: channel::Id",
- "ordinal": 0,
- "type_info": "Text"
- },
- {
- "name": "sender: login::Id",
- "ordinal": 1,
- "type_info": "Text"
- },
- {
- "name": "id: Id",
- "ordinal": 2,
- "type_info": "Text"
- },
- {
- "name": "body",
- "ordinal": 3,
- "type_info": "Text"
- },
- {
- "name": "sent_at: DateTime",
- "ordinal": 4,
- "type_info": "Text"
- },
- {
- "name": "sent_sequence: Sequence",
- "ordinal": 5,
- "type_info": "Integer"
- }
- ],
- "parameters": {
- "Right": 1
- },
- "nullable": [
- false,
- false,
- false,
- false,
- false,
- false
- ]
- },
- "hash": "191255b9e55c9b36d0fd047e56e515d121964d3481e48aae3558b53a5123ce7d"
-}
diff --git a/.sqlx/query-2252b49c77ff76a88ee7d24a4d68d68c8d9f8b9483af48de5d4e09857181d632.json b/.sqlx/query-2252b49c77ff76a88ee7d24a4d68d68c8d9f8b9483af48de5d4e09857181d632.json
new file mode 100644
index 0000000..9975fd1
--- /dev/null
+++ b/.sqlx/query-2252b49c77ff76a88ee7d24a4d68d68c8d9f8b9483af48de5d4e09857181d632.json
@@ -0,0 +1,20 @@
+{
+ "db_name": "SQLite",
+ "query": "\n update channel\n set name = \"\"\n where id = $1\n returning 1 as \"updated: bool\"\n ",
+ "describe": {
+ "columns": [
+ {
+ "name": "updated: bool",
+ "ordinal": 0,
+ "type_info": "Null"
+ }
+ ],
+ "parameters": {
+ "Right": 1
+ },
+ "nullable": [
+ null
+ ]
+ },
+ "hash": "2252b49c77ff76a88ee7d24a4d68d68c8d9f8b9483af48de5d4e09857181d632"
+}
diff --git a/.sqlx/query-33f9a143409e6f436ed6b64abfbb9e06a5889460743202ca7956acabf006843e.json b/.sqlx/query-33f9a143409e6f436ed6b64abfbb9e06a5889460743202ca7956acabf006843e.json
deleted file mode 100644
index 1480953..0000000
--- a/.sqlx/query-33f9a143409e6f436ed6b64abfbb9e06a5889460743202ca7956acabf006843e.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "db_name": "SQLite",
- "query": "\n delete from message\n where\n id = $1\n returning 1 as \"deleted: i64\"\n ",
- "describe": {
- "columns": [
- {
- "name": "deleted: i64",
- "ordinal": 0,
- "type_info": "Null"
- }
- ],
- "parameters": {
- "Right": 1
- },
- "nullable": [
- null
- ]
- },
- "hash": "33f9a143409e6f436ed6b64abfbb9e06a5889460743202ca7956acabf006843e"
-}
diff --git a/.sqlx/query-400de8e1dca27c48362b060c5b16e9ae908c4ea30e2d682d59d4720699b8de91.json b/.sqlx/query-400de8e1dca27c48362b060c5b16e9ae908c4ea30e2d682d59d4720699b8de91.json
new file mode 100644
index 0000000..3d77307
--- /dev/null
+++ b/.sqlx/query-400de8e1dca27c48362b060c5b16e9ae908c4ea30e2d682d59d4720699b8de91.json
@@ -0,0 +1,62 @@
+{
+ "db_name": "SQLite",
+ "query": "\n select\n id as \"id: Id\",\n message.channel as \"channel: channel::Id\",\n message.sender as \"sender: login::Id\",\n message.sent_at as \"sent_at: DateTime\",\n message.sent_sequence as \"sent_sequence: Sequence\",\n message.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 coalesce(message.sent_sequence > $1, true)\n ",
+ "describe": {
+ "columns": [
+ {
+ "name": "id: Id",
+ "ordinal": 0,
+ "type_info": "Text"
+ },
+ {
+ "name": "channel: channel::Id",
+ "ordinal": 1,
+ "type_info": "Text"
+ },
+ {
+ "name": "sender: login::Id",
+ "ordinal": 2,
+ "type_info": "Text"
+ },
+ {
+ "name": "sent_at: DateTime",
+ "ordinal": 3,
+ "type_info": "Text"
+ },
+ {
+ "name": "sent_sequence: Sequence",
+ "ordinal": 4,
+ "type_info": "Integer"
+ },
+ {
+ "name": "body",
+ "ordinal": 5,
+ "type_info": "Text"
+ },
+ {
+ "name": "deleted_at: DateTime",
+ "ordinal": 6,
+ "type_info": "Text"
+ },
+ {
+ "name": "deleted_sequence: Sequence",
+ "ordinal": 7,
+ "type_info": "Integer"
+ }
+ ],
+ "parameters": {
+ "Right": 1
+ },
+ "nullable": [
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true
+ ]
+ },
+ "hash": "400de8e1dca27c48362b060c5b16e9ae908c4ea30e2d682d59d4720699b8de91"
+}
diff --git a/.sqlx/query-487092b18b01005fdb446c11f4726612141f7242decad1de5d9d5f166cb04990.json b/.sqlx/query-487092b18b01005fdb446c11f4726612141f7242decad1de5d9d5f166cb04990.json
new file mode 100644
index 0000000..c919eb2
--- /dev/null
+++ b/.sqlx/query-487092b18b01005fdb446c11f4726612141f7242decad1de5d9d5f166cb04990.json
@@ -0,0 +1,20 @@
+{
+ "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-58c17422db7edd8f0462378da75962b278d8191f77ffdea8dad8441f2bf72786.json b/.sqlx/query-58c17422db7edd8f0462378da75962b278d8191f77ffdea8dad8441f2bf72786.json
new file mode 100644
index 0000000..ebfb579
--- /dev/null
+++ b/.sqlx/query-58c17422db7edd8f0462378da75962b278d8191f77ffdea8dad8441f2bf72786.json
@@ -0,0 +1,12 @@
+{
+ "db_name": "SQLite",
+ "query": "\n insert into channel_name_reservation (id, name)\n values ($1, $2)\n ",
+ "describe": {
+ "columns": [],
+ "parameters": {
+ "Right": 2
+ },
+ "nullable": []
+ },
+ "hash": "58c17422db7edd8f0462378da75962b278d8191f77ffdea8dad8441f2bf72786"
+}
diff --git a/.sqlx/query-6c82af3b136a6719d52f49767190eeaaf479b458c18f79ff62c46b7aac158a77.json b/.sqlx/query-6c82af3b136a6719d52f49767190eeaaf479b458c18f79ff62c46b7aac158a77.json
new file mode 100644
index 0000000..4251f92
--- /dev/null
+++ b/.sqlx/query-6c82af3b136a6719d52f49767190eeaaf479b458c18f79ff62c46b7aac158a77.json
@@ -0,0 +1,62 @@
+{
+ "db_name": "SQLite",
+ "query": "\n select\n message.channel as \"channel: channel::Id\",\n message.sender as \"sender: login::Id\",\n id as \"id: Id\",\n message.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",
+ "ordinal": 0,
+ "type_info": "Text"
+ },
+ {
+ "name": "sender: login::Id",
+ "ordinal": 1,
+ "type_info": "Text"
+ },
+ {
+ "name": "id: Id",
+ "ordinal": 2,
+ "type_info": "Text"
+ },
+ {
+ "name": "body",
+ "ordinal": 3,
+ "type_info": "Text"
+ },
+ {
+ "name": "sent_at: DateTime",
+ "ordinal": 4,
+ "type_info": "Text"
+ },
+ {
+ "name": "sent_sequence: Sequence",
+ "ordinal": 5,
+ "type_info": "Integer"
+ },
+ {
+ "name": "deleted_at: DateTime",
+ "ordinal": 6,
+ "type_info": "Text"
+ },
+ {
+ "name": "deleted_sequence: Sequence",
+ "ordinal": 7,
+ "type_info": "Integer"
+ }
+ ],
+ "parameters": {
+ "Right": 1
+ },
+ "nullable": [
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true
+ ]
+ },
+ "hash": "6c82af3b136a6719d52f49767190eeaaf479b458c18f79ff62c46b7aac158a77"
+}
diff --git a/.sqlx/query-771d1afa5961bae86112a51fc629c8edba240926d21fbe03d884e2a48b034336.json b/.sqlx/query-771d1afa5961bae86112a51fc629c8edba240926d21fbe03d884e2a48b034336.json
new file mode 100644
index 0000000..8a92f44
--- /dev/null
+++ b/.sqlx/query-771d1afa5961bae86112a51fc629c8edba240926d21fbe03d884e2a48b034336.json
@@ -0,0 +1,50 @@
+{
+ "db_name": "SQLite",
+ "query": "\n select\n channel.id as \"id: Id\",\n channel.name,\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_deleted as deleted\n using (id)\n left join message\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": "name",
+ "ordinal": 1,
+ "type_info": "Text"
+ },
+ {
+ "name": "created_at: DateTime",
+ "ordinal": 2,
+ "type_info": "Text"
+ },
+ {
+ "name": "created_sequence: Sequence",
+ "ordinal": 3,
+ "type_info": "Integer"
+ },
+ {
+ "name": "deleted_at: DateTime",
+ "ordinal": 4,
+ "type_info": "Text"
+ },
+ {
+ "name": "deleted_sequence: Sequence",
+ "ordinal": 5,
+ "type_info": "Integer"
+ }
+ ],
+ "parameters": {
+ "Right": 1
+ },
+ "nullable": [
+ false,
+ false,
+ false,
+ false,
+ true,
+ true
+ ]
+ },
+ "hash": "771d1afa5961bae86112a51fc629c8edba240926d21fbe03d884e2a48b034336"
+}
diff --git a/.sqlx/query-814400dfe985ef284db22c89d6e1a0eb2131b6581759a5028afb6a0910284803.json b/.sqlx/query-814400dfe985ef284db22c89d6e1a0eb2131b6581759a5028afb6a0910284803.json
new file mode 100644
index 0000000..4bcf6d0
--- /dev/null
+++ b/.sqlx/query-814400dfe985ef284db22c89d6e1a0eb2131b6581759a5028afb6a0910284803.json
@@ -0,0 +1,12 @@
+{
+ "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-8d9b83fb53e4191ee58b68e65e101d0941f2a266679209f793fd27466b9e3719.json b/.sqlx/query-8d9b83fb53e4191ee58b68e65e101d0941f2a266679209f793fd27466b9e3719.json
new file mode 100644
index 0000000..c09bdc6
--- /dev/null
+++ b/.sqlx/query-8d9b83fb53e4191ee58b68e65e101d0941f2a266679209f793fd27466b9e3719.json
@@ -0,0 +1,50 @@
+{
+ "db_name": "SQLite",
+ "query": "\n select\n id as \"id: Id\",\n channel.name,\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_deleted as deleted\n using (id)\n where coalesce(channel.created_sequence <= $1, true)\n order by channel.name\n ",
+ "describe": {
+ "columns": [
+ {
+ "name": "id: Id",
+ "ordinal": 0,
+ "type_info": "Text"
+ },
+ {
+ "name": "name",
+ "ordinal": 1,
+ "type_info": "Text"
+ },
+ {
+ "name": "created_at: DateTime",
+ "ordinal": 2,
+ "type_info": "Text"
+ },
+ {
+ "name": "created_sequence: Sequence",
+ "ordinal": 3,
+ "type_info": "Integer"
+ },
+ {
+ "name": "deleted_at: DateTime",
+ "ordinal": 4,
+ "type_info": "Text"
+ },
+ {
+ "name": "deleted_sequence: Sequence",
+ "ordinal": 5,
+ "type_info": "Integer"
+ }
+ ],
+ "parameters": {
+ "Right": 1
+ },
+ "nullable": [
+ false,
+ false,
+ false,
+ false,
+ true,
+ true
+ ]
+ },
+ "hash": "8d9b83fb53e4191ee58b68e65e101d0941f2a266679209f793fd27466b9e3719"
+}
diff --git a/.sqlx/query-8eebba45e8267b9eebc7b1ae7e18ecb51d54d1e304dcbd847de145c0c75423a7.json b/.sqlx/query-8eebba45e8267b9eebc7b1ae7e18ecb51d54d1e304dcbd847de145c0c75423a7.json
new file mode 100644
index 0000000..0394bc5
--- /dev/null
+++ b/.sqlx/query-8eebba45e8267b9eebc7b1ae7e18ecb51d54d1e304dcbd847de145c0c75423a7.json
@@ -0,0 +1,20 @@
+{
+ "db_name": "SQLite",
+ "query": "\n update message\n set body = \"\"\n where id = $1\n returning 1 as \"blanked: bool\"\n ",
+ "describe": {
+ "columns": [
+ {
+ "name": "blanked: bool",
+ "ordinal": 0,
+ "type_info": "Null"
+ }
+ ],
+ "parameters": {
+ "Right": 1
+ },
+ "nullable": [
+ null
+ ]
+ },
+ "hash": "8eebba45e8267b9eebc7b1ae7e18ecb51d54d1e304dcbd847de145c0c75423a7"
+}
diff --git a/.sqlx/query-9386cdaa2cb41f5a7e19d2fc8c187294a4661c18c2d820f4379dfd82138a8f77.json b/.sqlx/query-9386cdaa2cb41f5a7e19d2fc8c187294a4661c18c2d820f4379dfd82138a8f77.json
deleted file mode 100644
index e9c3967..0000000
--- a/.sqlx/query-9386cdaa2cb41f5a7e19d2fc8c187294a4661c18c2d820f4379dfd82138a8f77.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "db_name": "SQLite",
- "query": "\n select\n id as \"id: Id\",\n name,\n created_at as \"created_at: DateTime\",\n created_sequence as \"created_sequence: Sequence\"\n from channel\n where coalesce(created_sequence > $1, true)\n ",
- "describe": {
- "columns": [
- {
- "name": "id: Id",
- "ordinal": 0,
- "type_info": "Text"
- },
- {
- "name": "name",
- "ordinal": 1,
- "type_info": "Text"
- },
- {
- "name": "created_at: DateTime",
- "ordinal": 2,
- "type_info": "Text"
- },
- {
- "name": "created_sequence: Sequence",
- "ordinal": 3,
- "type_info": "Integer"
- }
- ],
- "parameters": {
- "Right": 1
- },
- "nullable": [
- false,
- false,
- false,
- false
- ]
- },
- "hash": "9386cdaa2cb41f5a7e19d2fc8c187294a4661c18c2d820f4379dfd82138a8f77"
-}
diff --git a/.sqlx/query-9f83f0365b174ce61adb6d48f3b75adcb3ddf8a88439aa8ddb0c66be2f0b384e.json b/.sqlx/query-9f83f0365b174ce61adb6d48f3b75adcb3ddf8a88439aa8ddb0c66be2f0b384e.json
deleted file mode 100644
index c8ce115..0000000
--- a/.sqlx/query-9f83f0365b174ce61adb6d48f3b75adcb3ddf8a88439aa8ddb0c66be2f0b384e.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
- "db_name": "SQLite",
- "query": "\n select\n channel as \"channel: channel::Id\",\n sender as \"sender: login::Id\",\n id as \"id: Id\",\n body,\n sent_at as \"sent_at: DateTime\",\n sent_sequence as \"sent_sequence: Sequence\"\n from message\n where id = $1\n ",
- "describe": {
- "columns": [
- {
- "name": "channel: channel::Id",
- "ordinal": 0,
- "type_info": "Text"
- },
- {
- "name": "sender: login::Id",
- "ordinal": 1,
- "type_info": "Text"
- },
- {
- "name": "id: Id",
- "ordinal": 2,
- "type_info": "Text"
- },
- {
- "name": "body",
- "ordinal": 3,
- "type_info": "Text"
- },
- {
- "name": "sent_at: DateTime",
- "ordinal": 4,
- "type_info": "Text"
- },
- {
- "name": "sent_sequence: Sequence",
- "ordinal": 5,
- "type_info": "Integer"
- }
- ],
- "parameters": {
- "Right": 1
- },
- "nullable": [
- false,
- false,
- false,
- false,
- false,
- false
- ]
- },
- "hash": "9f83f0365b174ce61adb6d48f3b75adcb3ddf8a88439aa8ddb0c66be2f0b384e"
-}
diff --git a/.sqlx/query-afe4404b44bd8ce6c9a51aafabe3524caa9882d0cba0dc4359eb62cf8154c92d.json b/.sqlx/query-afe4404b44bd8ce6c9a51aafabe3524caa9882d0cba0dc4359eb62cf8154c92d.json
deleted file mode 100644
index cc8a074..0000000
--- a/.sqlx/query-afe4404b44bd8ce6c9a51aafabe3524caa9882d0cba0dc4359eb62cf8154c92d.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
- "db_name": "SQLite",
- "query": "\n select\n channel as \"channel: channel::Id\",\n sender as \"sender: login::Id\",\n id as \"id: Id\",\n body,\n sent_at as \"sent_at: DateTime\",\n sent_sequence as \"sent_sequence: Sequence\"\n from message\n where channel = $1\n and coalesce(sent_sequence <= $2, true)\n order by sent_sequence\n ",
- "describe": {
- "columns": [
- {
- "name": "channel: channel::Id",
- "ordinal": 0,
- "type_info": "Text"
- },
- {
- "name": "sender: login::Id",
- "ordinal": 1,
- "type_info": "Text"
- },
- {
- "name": "id: Id",
- "ordinal": 2,
- "type_info": "Text"
- },
- {
- "name": "body",
- "ordinal": 3,
- "type_info": "Text"
- },
- {
- "name": "sent_at: DateTime",
- "ordinal": 4,
- "type_info": "Text"
- },
- {
- "name": "sent_sequence: Sequence",
- "ordinal": 5,
- "type_info": "Integer"
- }
- ],
- "parameters": {
- "Right": 2
- },
- "nullable": [
- false,
- false,
- false,
- false,
- false,
- false
- ]
- },
- "hash": "afe4404b44bd8ce6c9a51aafabe3524caa9882d0cba0dc4359eb62cf8154c92d"
-}
diff --git a/.sqlx/query-b1ba724a62135a6fbcb7ad314ba09dbe4e42fd49b2007e47bcfb07b5ba9001b0.json b/.sqlx/query-b1ba724a62135a6fbcb7ad314ba09dbe4e42fd49b2007e47bcfb07b5ba9001b0.json
new file mode 100644
index 0000000..5825ce8
--- /dev/null
+++ b/.sqlx/query-b1ba724a62135a6fbcb7ad314ba09dbe4e42fd49b2007e47bcfb07b5ba9001b0.json
@@ -0,0 +1,20 @@
+{
+ "db_name": "SQLite",
+ "query": "\n insert into channel_deleted (id, deleted_at, deleted_sequence)\n values ($1, $2, $3)\n returning 1 as \"deleted: bool\"\n ",
+ "describe": {
+ "columns": [
+ {
+ "name": "deleted: bool",
+ "ordinal": 0,
+ "type_info": "Null"
+ }
+ ],
+ "parameters": {
+ "Right": 3
+ },
+ "nullable": [
+ null
+ ]
+ },
+ "hash": "b1ba724a62135a6fbcb7ad314ba09dbe4e42fd49b2007e47bcfb07b5ba9001b0"
+}
diff --git a/.sqlx/query-b7e05e2b2eb5484c954bcedf5de8c7d9ad11bb09a0d0d243181d97c79d771071.json b/.sqlx/query-b7e05e2b2eb5484c954bcedf5de8c7d9ad11bb09a0d0d243181d97c79d771071.json
deleted file mode 100644
index b82727f..0000000
--- a/.sqlx/query-b7e05e2b2eb5484c954bcedf5de8c7d9ad11bb09a0d0d243181d97c79d771071.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "db_name": "SQLite",
- "query": "\n select\n channel.id as \"id: Id\"\n from channel\n left join message\n where created_at < $1\n and message.id is null\n ",
- "describe": {
- "columns": [
- {
- "name": "id: Id",
- "ordinal": 0,
- "type_info": "Text"
- }
- ],
- "parameters": {
- "Right": 1
- },
- "nullable": [
- false
- ]
- },
- "hash": "b7e05e2b2eb5484c954bcedf5de8c7d9ad11bb09a0d0d243181d97c79d771071"
-}
diff --git a/.sqlx/query-bddc3b0d75f6048c36630db3abb8945a49ce18fb715d249bc9d93fc7d10e817d.json b/.sqlx/query-bddc3b0d75f6048c36630db3abb8945a49ce18fb715d249bc9d93fc7d10e817d.json
new file mode 100644
index 0000000..f454fbb
--- /dev/null
+++ b/.sqlx/query-bddc3b0d75f6048c36630db3abb8945a49ce18fb715d249bc9d93fc7d10e817d.json
@@ -0,0 +1,62 @@
+{
+ "db_name": "SQLite",
+ "query": "\n select\n message.channel as \"channel: channel::Id\",\n message.sender as \"sender: login::Id\",\n id as \"id: Id\",\n message.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 coalesce(message.sent_sequence <= $2, true)\n order by message.sent_sequence\n ",
+ "describe": {
+ "columns": [
+ {
+ "name": "channel: channel::Id",
+ "ordinal": 0,
+ "type_info": "Text"
+ },
+ {
+ "name": "sender: login::Id",
+ "ordinal": 1,
+ "type_info": "Text"
+ },
+ {
+ "name": "id: Id",
+ "ordinal": 2,
+ "type_info": "Text"
+ },
+ {
+ "name": "body",
+ "ordinal": 3,
+ "type_info": "Text"
+ },
+ {
+ "name": "sent_at: DateTime",
+ "ordinal": 4,
+ "type_info": "Text"
+ },
+ {
+ "name": "sent_sequence: Sequence",
+ "ordinal": 5,
+ "type_info": "Integer"
+ },
+ {
+ "name": "deleted_at: DateTime",
+ "ordinal": 6,
+ "type_info": "Text"
+ },
+ {
+ "name": "deleted_sequence: Sequence",
+ "ordinal": 7,
+ "type_info": "Integer"
+ }
+ ],
+ "parameters": {
+ "Right": 1
+ },
+ "nullable": [
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true
+ ]
+ },
+ "hash": "bddc3b0d75f6048c36630db3abb8945a49ce18fb715d249bc9d93fc7d10e817d"
+}
diff --git a/.sqlx/query-c90cbe4c836adf7f104b7b6a6a72a129f9484b4d9b9e62e7c546d965cdde721a.json b/.sqlx/query-c90cbe4c836adf7f104b7b6a6a72a129f9484b4d9b9e62e7c546d965cdde721a.json
new file mode 100644
index 0000000..eb41cba
--- /dev/null
+++ b/.sqlx/query-c90cbe4c836adf7f104b7b6a6a72a129f9484b4d9b9e62e7c546d965cdde721a.json
@@ -0,0 +1,62 @@
+{
+ "db_name": "SQLite",
+ "query": "\n select\n id as \"id: Id\",\n message.channel as \"channel: channel::Id\",\n message.sender as \"sender: login::Id\",\n message.sent_at as \"sent_at: DateTime\",\n message.sent_sequence as \"sent_sequence: Sequence\",\n message.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": [
+ {
+ "name": "id: Id",
+ "ordinal": 0,
+ "type_info": "Text"
+ },
+ {
+ "name": "channel: channel::Id",
+ "ordinal": 1,
+ "type_info": "Text"
+ },
+ {
+ "name": "sender: login::Id",
+ "ordinal": 2,
+ "type_info": "Text"
+ },
+ {
+ "name": "sent_at: DateTime",
+ "ordinal": 3,
+ "type_info": "Text"
+ },
+ {
+ "name": "sent_sequence: Sequence",
+ "ordinal": 4,
+ "type_info": "Integer"
+ },
+ {
+ "name": "body",
+ "ordinal": 5,
+ "type_info": "Text"
+ },
+ {
+ "name": "deleted_at: DateTime",
+ "ordinal": 6,
+ "type_info": "Text"
+ },
+ {
+ "name": "deleted_sequence: Sequence",
+ "ordinal": 7,
+ "type_info": "Integer"
+ }
+ ],
+ "parameters": {
+ "Right": 1
+ },
+ "nullable": [
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true
+ ]
+ },
+ "hash": "c90cbe4c836adf7f104b7b6a6a72a129f9484b4d9b9e62e7c546d965cdde721a"
+}
diff --git a/.sqlx/query-cda3a4a974eb986ebe26838143f6b5d16dbeb19ad13ac36dcb40851f0af238e8.json b/.sqlx/query-cda3a4a974eb986ebe26838143f6b5d16dbeb19ad13ac36dcb40851f0af238e8.json
deleted file mode 100644
index bce6a88..0000000
--- a/.sqlx/query-cda3a4a974eb986ebe26838143f6b5d16dbeb19ad13ac36dcb40851f0af238e8.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "db_name": "SQLite",
- "query": "\n select\n id as \"id: Id\",\n name,\n created_at as \"created_at: DateTime\",\n created_sequence as \"created_sequence: Sequence\"\n from channel\n where coalesce(created_sequence <= $1, true)\n order by channel.name\n ",
- "describe": {
- "columns": [
- {
- "name": "id: Id",
- "ordinal": 0,
- "type_info": "Text"
- },
- {
- "name": "name",
- "ordinal": 1,
- "type_info": "Text"
- },
- {
- "name": "created_at: DateTime",
- "ordinal": 2,
- "type_info": "Text"
- },
- {
- "name": "created_sequence: Sequence",
- "ordinal": 3,
- "type_info": "Integer"
- }
- ],
- "parameters": {
- "Right": 1
- },
- "nullable": [
- false,
- false,
- false,
- false
- ]
- },
- "hash": "cda3a4a974eb986ebe26838143f6b5d16dbeb19ad13ac36dcb40851f0af238e8"
-}
diff --git a/.sqlx/query-d6feb736b61c645649082e55c7cf413825151e1cda939378984611dc2d9a789a.json b/.sqlx/query-d6feb736b61c645649082e55c7cf413825151e1cda939378984611dc2d9a789a.json
new file mode 100644
index 0000000..f96ceca
--- /dev/null
+++ b/.sqlx/query-d6feb736b61c645649082e55c7cf413825151e1cda939378984611dc2d9a789a.json
@@ -0,0 +1,20 @@
+{
+ "db_name": "SQLite",
+ "query": "\n delete from channel_name_reservation\n where id = $1\n returning 1 as \"deleted: bool\"\n ",
+ "describe": {
+ "columns": [
+ {
+ "name": "deleted: bool",
+ "ordinal": 0,
+ "type_info": "Null"
+ }
+ ],
+ "parameters": {
+ "Right": 1
+ },
+ "nullable": [
+ null
+ ]
+ },
+ "hash": "d6feb736b61c645649082e55c7cf413825151e1cda939378984611dc2d9a789a"
+}
diff --git a/.sqlx/query-e2686f26f8646b4cd31beeb2060b9a6d6e0bbcb4cf8d01c48b297e6f0a950ebc.json b/.sqlx/query-e2686f26f8646b4cd31beeb2060b9a6d6e0bbcb4cf8d01c48b297e6f0a950ebc.json
new file mode 100644
index 0000000..b8ab769
--- /dev/null
+++ b/.sqlx/query-e2686f26f8646b4cd31beeb2060b9a6d6e0bbcb4cf8d01c48b297e6f0a950ebc.json
@@ -0,0 +1,50 @@
+{
+ "db_name": "SQLite",
+ "query": "\n select\n id as \"id: Id\",\n channel.name,\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_deleted as deleted\n using (id)\n where coalesce(channel.created_sequence > $1, true)\n ",
+ "describe": {
+ "columns": [
+ {
+ "name": "id: Id",
+ "ordinal": 0,
+ "type_info": "Text"
+ },
+ {
+ "name": "name",
+ "ordinal": 1,
+ "type_info": "Text"
+ },
+ {
+ "name": "created_at: DateTime",
+ "ordinal": 2,
+ "type_info": "Text"
+ },
+ {
+ "name": "created_sequence: Sequence",
+ "ordinal": 3,
+ "type_info": "Integer"
+ },
+ {
+ "name": "deleted_at: DateTime",
+ "ordinal": 4,
+ "type_info": "Text"
+ },
+ {
+ "name": "deleted_sequence: Sequence",
+ "ordinal": 5,
+ "type_info": "Integer"
+ }
+ ],
+ "parameters": {
+ "Right": 1
+ },
+ "nullable": [
+ false,
+ false,
+ false,
+ false,
+ true,
+ true
+ ]
+ },
+ "hash": "e2686f26f8646b4cd31beeb2060b9a6d6e0bbcb4cf8d01c48b297e6f0a950ebc"
+}
diff --git a/.sqlx/query-e476c3fb3f2227b7421ad2075d18b090751a345ac2e90bb8c116e0fbb5dfbb99.json b/.sqlx/query-e476c3fb3f2227b7421ad2075d18b090751a345ac2e90bb8c116e0fbb5dfbb99.json
deleted file mode 100644
index 821bd8f..0000000
--- a/.sqlx/query-e476c3fb3f2227b7421ad2075d18b090751a345ac2e90bb8c116e0fbb5dfbb99.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
- "db_name": "SQLite",
- "query": "\n select\n channel as \"channel: channel::Id\",\n sender as \"sender: login::Id\",\n id as \"id: Id\",\n body,\n sent_at as \"sent_at: DateTime\",\n sent_sequence as \"sent_sequence: Sequence\"\n from message\n where coalesce(message.sent_sequence > $1, true)\n ",
- "describe": {
- "columns": [
- {
- "name": "channel: channel::Id",
- "ordinal": 0,
- "type_info": "Text"
- },
- {
- "name": "sender: login::Id",
- "ordinal": 1,
- "type_info": "Text"
- },
- {
- "name": "id: Id",
- "ordinal": 2,
- "type_info": "Text"
- },
- {
- "name": "body",
- "ordinal": 3,
- "type_info": "Text"
- },
- {
- "name": "sent_at: DateTime",
- "ordinal": 4,
- "type_info": "Text"
- },
- {
- "name": "sent_sequence: Sequence",
- "ordinal": 5,
- "type_info": "Integer"
- }
- ],
- "parameters": {
- "Right": 1
- },
- "nullable": [
- false,
- false,
- false,
- false,
- false,
- false
- ]
- },
- "hash": "e476c3fb3f2227b7421ad2075d18b090751a345ac2e90bb8c116e0fbb5dfbb99"
-}
diff --git a/.sqlx/query-e621d064ba52cd13b196bce32c2cc4f93832948768dcbd1d12abcdbc5089ca8e.json b/.sqlx/query-e621d064ba52cd13b196bce32c2cc4f93832948768dcbd1d12abcdbc5089ca8e.json
new file mode 100644
index 0000000..d56cec0
--- /dev/null
+++ b/.sqlx/query-e621d064ba52cd13b196bce32c2cc4f93832948768dcbd1d12abcdbc5089ca8e.json
@@ -0,0 +1,50 @@
+{
+ "db_name": "SQLite",
+ "query": "\n select\n id as \"id: Id\",\n channel.name,\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_deleted as deleted\n using (id)\n where id = $1\n ",
+ "describe": {
+ "columns": [
+ {
+ "name": "id: Id",
+ "ordinal": 0,
+ "type_info": "Text"
+ },
+ {
+ "name": "name",
+ "ordinal": 1,
+ "type_info": "Text"
+ },
+ {
+ "name": "created_at: DateTime",
+ "ordinal": 2,
+ "type_info": "Text"
+ },
+ {
+ "name": "created_sequence: Sequence",
+ "ordinal": 3,
+ "type_info": "Integer"
+ },
+ {
+ "name": "deleted_at: DateTime",
+ "ordinal": 4,
+ "type_info": "Text"
+ },
+ {
+ "name": "deleted_sequence: Sequence",
+ "ordinal": 5,
+ "type_info": "Integer"
+ }
+ ],
+ "parameters": {
+ "Right": 1
+ },
+ "nullable": [
+ false,
+ false,
+ false,
+ false,
+ true,
+ true
+ ]
+ },
+ "hash": "e621d064ba52cd13b196bce32c2cc4f93832948768dcbd1d12abcdbc5089ca8e"
+}
diff --git a/.sqlx/query-e702a0e7ff9a0a9808f8d45294ae908114b03719dc0cb237cec11f807bf757b1.json b/.sqlx/query-e702a0e7ff9a0a9808f8d45294ae908114b03719dc0cb237cec11f807bf757b1.json
new file mode 100644
index 0000000..0b48645
--- /dev/null
+++ b/.sqlx/query-e702a0e7ff9a0a9808f8d45294ae908114b03719dc0cb237cec11f807bf757b1.json
@@ -0,0 +1,62 @@
+{
+ "db_name": "SQLite",
+ "query": "\n select\n message.channel as \"channel: channel::Id\",\n message.sender as \"sender: login::Id\",\n id as \"id: Id\",\n message.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 ",
+ "describe": {
+ "columns": [
+ {
+ "name": "channel: channel::Id",
+ "ordinal": 0,
+ "type_info": "Text"
+ },
+ {
+ "name": "sender: login::Id",
+ "ordinal": 1,
+ "type_info": "Text"
+ },
+ {
+ "name": "id: Id",
+ "ordinal": 2,
+ "type_info": "Text"
+ },
+ {
+ "name": "body",
+ "ordinal": 3,
+ "type_info": "Text"
+ },
+ {
+ "name": "sent_at: DateTime",
+ "ordinal": 4,
+ "type_info": "Text"
+ },
+ {
+ "name": "sent_sequence: Sequence",
+ "ordinal": 5,
+ "type_info": "Integer"
+ },
+ {
+ "name": "deleted_at: DateTime",
+ "ordinal": 6,
+ "type_info": "Text"
+ },
+ {
+ "name": "deleted_sequence: Sequence",
+ "ordinal": 7,
+ "type_info": "Integer"
+ }
+ ],
+ "parameters": {
+ "Right": 1
+ },
+ "nullable": [
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true
+ ]
+ },
+ "hash": "e702a0e7ff9a0a9808f8d45294ae908114b03719dc0cb237cec11f807bf757b1"
+}
diff --git a/.sqlx/query-ea5d8528095f8885b7e31687ec44bfea55ae259cc5fd412bdc30881b98ed12f8.json b/.sqlx/query-ea5d8528095f8885b7e31687ec44bfea55ae259cc5fd412bdc30881b98ed12f8.json
new file mode 100644
index 0000000..68b7155
--- /dev/null
+++ b/.sqlx/query-ea5d8528095f8885b7e31687ec44bfea55ae259cc5fd412bdc30881b98ed12f8.json
@@ -0,0 +1,20 @@
+{
+ "db_name": "SQLite",
+ "query": "\n delete from message_deleted\n where deleted_at < $1\n returning id as \"id: Id\"\n ",
+ "describe": {
+ "columns": [
+ {
+ "name": "id: Id",
+ "ordinal": 0,
+ "type_info": "Text"
+ }
+ ],
+ "parameters": {
+ "Right": 1
+ },
+ "nullable": [
+ false
+ ]
+ },
+ "hash": "ea5d8528095f8885b7e31687ec44bfea55ae259cc5fd412bdc30881b98ed12f8"
+}
diff --git a/.sqlx/query-f3a338b9e4a65856decd79ad2d2dec42949522f182a61bfb249f13ee78564179.json b/.sqlx/query-f3a338b9e4a65856decd79ad2d2dec42949522f182a61bfb249f13ee78564179.json
deleted file mode 100644
index 92a64a3..0000000
--- a/.sqlx/query-f3a338b9e4a65856decd79ad2d2dec42949522f182a61bfb249f13ee78564179.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "db_name": "SQLite",
- "query": "\n select\n id as \"message: Id\"\n from message\n where sent_at < $1\n ",
- "describe": {
- "columns": [
- {
- "name": "message: Id",
- "ordinal": 0,
- "type_info": "Text"
- }
- ],
- "parameters": {
- "Right": 1
- },
- "nullable": [
- false
- ]
- },
- "hash": "f3a338b9e4a65856decd79ad2d2dec42949522f182a61bfb249f13ee78564179"
-}
diff --git a/.sqlx/query-f511d351018c908bf303ae20ac429b55db93ceb5ce501917188e7b2f14975f34.json b/.sqlx/query-f511d351018c908bf303ae20ac429b55db93ceb5ce501917188e7b2f14975f34.json
new file mode 100644
index 0000000..69fdf03
--- /dev/null
+++ b/.sqlx/query-f511d351018c908bf303ae20ac429b55db93ceb5ce501917188e7b2f14975f34.json
@@ -0,0 +1,12 @@
+{
+ "db_name": "SQLite",
+ "query": "\n delete from message\n where id = $1\n ",
+ "describe": {
+ "columns": [],
+ "parameters": {
+ "Right": 1
+ },
+ "nullable": []
+ },
+ "hash": "f511d351018c908bf303ae20ac429b55db93ceb5ce501917188e7b2f14975f34"
+}
diff --git a/.sqlx/query-f6909336ab05b7ad423c7b96a0e7b12a920f9827aff2b05ee0364ff7688a38ae.json b/.sqlx/query-f6909336ab05b7ad423c7b96a0e7b12a920f9827aff2b05ee0364ff7688a38ae.json
deleted file mode 100644
index ded48e1..0000000
--- a/.sqlx/query-f6909336ab05b7ad423c7b96a0e7b12a920f9827aff2b05ee0364ff7688a38ae.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "db_name": "SQLite",
- "query": "\n select\n id as \"id: Id\",\n name,\n created_at as \"created_at: DateTime\",\n created_sequence as \"created_sequence: Sequence\"\n from channel\n where id = $1\n ",
- "describe": {
- "columns": [
- {
- "name": "id: Id",
- "ordinal": 0,
- "type_info": "Text"
- },
- {
- "name": "name",
- "ordinal": 1,
- "type_info": "Text"
- },
- {
- "name": "created_at: DateTime",
- "ordinal": 2,
- "type_info": "Text"
- },
- {
- "name": "created_sequence: Sequence",
- "ordinal": 3,
- "type_info": "Integer"
- }
- ],
- "parameters": {
- "Right": 1
- },
- "nullable": [
- false,
- false,
- false,
- false
- ]
- },
- "hash": "f6909336ab05b7ad423c7b96a0e7b12a920f9827aff2b05ee0364ff7688a38ae"
-}