summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.sqlx/query-0be9484c8d277b08a925b7776b5d0e847cf52c68f24f5ea878b897944e70254c.json (renamed from .sqlx/query-8b474c8ed7859f745888644db639b7a4a21210ebf0b7fba97cd016ff6ab4d769.json)4
-rw-r--r--.sqlx/query-0d4e10f80c1f6d605c70c9d81d0295426d1148e786098b6d1a61a9c7d645c902.json (renamed from .sqlx/query-0f3bfb1ad8fad5213f733b32d8eb2d9c2bb4de2fbbf0b2280973966ef02f72b1.json)4
-rw-r--r--.sqlx/query-1a6654e50f9cbfe09a0a75b9c3126c22b432df8756ab007191f60702de270878.json (renamed from .sqlx/query-3c7cca4f823bd5e4cb0562af0c246e75ce95f6eb10f705c16b22345d31aefc61.json)4
-rw-r--r--.sqlx/query-27c3ffb5c284cf2d1c7cee713f6354d6150088a052d1f261853f327a83e8dd75.json20
-rw-r--r--.sqlx/query-5f9dfdff6e5067a02f9f01826c2d05f1b173691846e36370bccf166c08ce1955.json (renamed from .sqlx/query-903e7ec4fafd5ce124a0e40717bf42e5d43b041acb198710e75417ac40991ec6.json)4
-rw-r--r--.sqlx/query-613199c25e16a52d85761e213750fe202abfa2af5347010dee59d3b8075eb19e.json (renamed from .sqlx/query-0b1543ec93e02c48c5cbaafd391b5812dc2d1d4a52ea3072b5dd52d71637b33d.json)4
-rw-r--r--.sqlx/query-6755a7bba5733f4a8090bc895dff436d67edf6669a555fe20b178e9ba3039b0c.json (renamed from .sqlx/query-c31c02aa8c4e615c463835d188879a394d36e66f90edb27d2665f081ff95087f.json)4
-rw-r--r--.sqlx/query-9e4e8544c86e36901b4543d84b6ac46f63d2804ef3528d833e6d17bec8864454.json (renamed from .sqlx/query-2c20c29d9adfed6201a6a69da95bc8271dfc8c6ec8ebf174ba8a57111b322291.json)4
-rw-r--r--.sqlx/query-9eb1e7d793fe6a992dc937b041e5b5206628c3f0cd5230f6671bf8d8946d01f2.json (renamed from .sqlx/query-cbf29fae3725bbb3d9e94d932ace995f53efd6c7800a7a1b42daec41d081b3d2.json)4
-rw-r--r--.sqlx/query-bb1be4fab0d7fa56ae5a8ea977d13047cefdebee841d0df3c671a2104b9aef8f.json (renamed from .sqlx/query-6d34d8232e7247155c697f7ef7a26f6b14e1d30c3fb44ece8fb149c92317fa91.json)6
-rw-r--r--.sqlx/query-c2b0ff7e2f27b6970a16fbc233ed32638e853e3b8b8f8de26b53f90c98b6ce11.json20
-rw-r--r--.sqlx/query-c58e61c57373a7f19d98c46379d16a29b4d0d1348e31599dc47522849f759066.json (renamed from .sqlx/query-584aea21a5ceb0ce6e48bc224bfc431f2e517755983f3510565e18ecb0e6e637.json)4
-rw-r--r--.sqlx/query-e01508e57cc9cecc83640a5518d6364c8dbfdb45f205fecf0734fe272be493b0.json12
-rw-r--r--.sqlx/query-f9abb172f96bff3a5fb4ad29f3a52be8d3134fc68e37c6074c69970604ae3844.json12
-rw-r--r--migrations/20250323190045_rename_login_to_user.sql151
-rw-r--r--src/invite/repo.rs2
-rw-r--r--src/login/repo.rs10
-rw-r--r--src/setup/repo.rs2
-rw-r--r--src/token/repo/auth.rs4
-rw-r--r--src/token/repo/token.rs10
20 files changed, 218 insertions, 67 deletions
diff --git a/.sqlx/query-8b474c8ed7859f745888644db639b7a4a21210ebf0b7fba97cd016ff6ab4d769.json b/.sqlx/query-0be9484c8d277b08a925b7776b5d0e847cf52c68f24f5ea878b897944e70254c.json
index b433e4c..182f996 100644
--- a/.sqlx/query-8b474c8ed7859f745888644db639b7a4a21210ebf0b7fba97cd016ff6ab4d769.json
+++ b/.sqlx/query-0be9484c8d277b08a925b7776b5d0e847cf52c68f24f5ea878b897944e70254c.json
@@ -1,6 +1,6 @@
{
"db_name": "SQLite",
- "query": "\n insert\n into token (id, secret, login, issued_at, last_used_at)\n values ($1, $2, $3, $4, $4)\n returning secret as \"secret!: Secret\"\n ",
+ "query": "\n insert\n into token (id, secret, user, issued_at, last_used_at)\n values ($1, $2, $3, $4, $4)\n returning secret as \"secret!: Secret\"\n ",
"describe": {
"columns": [
{
@@ -16,5 +16,5 @@
false
]
},
- "hash": "8b474c8ed7859f745888644db639b7a4a21210ebf0b7fba97cd016ff6ab4d769"
+ "hash": "0be9484c8d277b08a925b7776b5d0e847cf52c68f24f5ea878b897944e70254c"
}
diff --git a/.sqlx/query-0f3bfb1ad8fad5213f733b32d8eb2d9c2bb4de2fbbf0b2280973966ef02f72b1.json b/.sqlx/query-0d4e10f80c1f6d605c70c9d81d0295426d1148e786098b6d1a61a9c7d645c902.json
index ffd81dc..57e4a6f 100644
--- a/.sqlx/query-0f3bfb1ad8fad5213f733b32d8eb2d9c2bb4de2fbbf0b2280973966ef02f72b1.json
+++ b/.sqlx/query-0d4e10f80c1f6d605c70c9d81d0295426d1148e786098b6d1a61a9c7d645c902.json
@@ -1,6 +1,6 @@
{
"db_name": "SQLite",
- "query": "\n select\n id as \"id: login::Id\",\n display_name as \"display_name: String\",\n canonical_name as \"canonical_name: String\",\n created_sequence as \"created_sequence: Sequence\",\n created_at as \"created_at: DateTime\",\n password_hash as \"password_hash: StoredHash\"\n from login\n where id = $1\n ",
+ "query": "\n select\n id as \"id: login::Id\",\n display_name as \"display_name: String\",\n canonical_name as \"canonical_name: String\",\n created_sequence as \"created_sequence: Sequence\",\n created_at as \"created_at: DateTime\",\n password_hash as \"password_hash: StoredHash\"\n from user\n where id = $1\n ",
"describe": {
"columns": [
{
@@ -46,5 +46,5 @@
false
]
},
- "hash": "0f3bfb1ad8fad5213f733b32d8eb2d9c2bb4de2fbbf0b2280973966ef02f72b1"
+ "hash": "0d4e10f80c1f6d605c70c9d81d0295426d1148e786098b6d1a61a9c7d645c902"
}
diff --git a/.sqlx/query-3c7cca4f823bd5e4cb0562af0c246e75ce95f6eb10f705c16b22345d31aefc61.json b/.sqlx/query-1a6654e50f9cbfe09a0a75b9c3126c22b432df8756ab007191f60702de270878.json
index 6aab5fc..2f114b8 100644
--- a/.sqlx/query-3c7cca4f823bd5e4cb0562af0c246e75ce95f6eb10f705c16b22345d31aefc61.json
+++ b/.sqlx/query-1a6654e50f9cbfe09a0a75b9c3126c22b432df8756ab007191f60702de270878.json
@@ -1,6 +1,6 @@
{
"db_name": "SQLite",
- "query": "\n select count(*) > 0 as \"completed: bool\"\n from login\n ",
+ "query": "\n select count(*) > 0 as \"completed: bool\"\n from user\n ",
"describe": {
"columns": [
{
@@ -16,5 +16,5 @@
false
]
},
- "hash": "3c7cca4f823bd5e4cb0562af0c246e75ce95f6eb10f705c16b22345d31aefc61"
+ "hash": "1a6654e50f9cbfe09a0a75b9c3126c22b432df8756ab007191f60702de270878"
}
diff --git a/.sqlx/query-27c3ffb5c284cf2d1c7cee713f6354d6150088a052d1f261853f327a83e8dd75.json b/.sqlx/query-27c3ffb5c284cf2d1c7cee713f6354d6150088a052d1f261853f327a83e8dd75.json
new file mode 100644
index 0000000..c02667e
--- /dev/null
+++ b/.sqlx/query-27c3ffb5c284cf2d1c7cee713f6354d6150088a052d1f261853f327a83e8dd75.json
@@ -0,0 +1,20 @@
+{
+ "db_name": "SQLite",
+ "query": "\n update user\n set password_hash = $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": "27c3ffb5c284cf2d1c7cee713f6354d6150088a052d1f261853f327a83e8dd75"
+}
diff --git a/.sqlx/query-903e7ec4fafd5ce124a0e40717bf42e5d43b041acb198710e75417ac40991ec6.json b/.sqlx/query-5f9dfdff6e5067a02f9f01826c2d05f1b173691846e36370bccf166c08ce1955.json
index cf1afec..215c0b5 100644
--- a/.sqlx/query-903e7ec4fafd5ce124a0e40717bf42e5d43b041acb198710e75417ac40991ec6.json
+++ b/.sqlx/query-5f9dfdff6e5067a02f9f01826c2d05f1b173691846e36370bccf166c08ce1955.json
@@ -1,6 +1,6 @@
{
"db_name": "SQLite",
- "query": "\n select\n id as \"id: login::Id\",\n display_name as \"display_name: String\",\n canonical_name as \"canonical_name: String\",\n created_sequence as \"created_sequence: Sequence\",\n created_at as \"created_at: DateTime\",\n password_hash as \"password_hash: StoredHash\"\n from login\n where canonical_name = $1\n ",
+ "query": "\n select\n id as \"id: login::Id\",\n display_name as \"display_name: String\",\n canonical_name as \"canonical_name: String\",\n created_sequence as \"created_sequence: Sequence\",\n created_at as \"created_at: DateTime\",\n password_hash as \"password_hash: StoredHash\"\n from user\n where canonical_name = $1\n ",
"describe": {
"columns": [
{
@@ -46,5 +46,5 @@
false
]
},
- "hash": "903e7ec4fafd5ce124a0e40717bf42e5d43b041acb198710e75417ac40991ec6"
+ "hash": "5f9dfdff6e5067a02f9f01826c2d05f1b173691846e36370bccf166c08ce1955"
}
diff --git a/.sqlx/query-0b1543ec93e02c48c5cbaafd391b5812dc2d1d4a52ea3072b5dd52d71637b33d.json b/.sqlx/query-613199c25e16a52d85761e213750fe202abfa2af5347010dee59d3b8075eb19e.json
index 937b07e..1657efa 100644
--- a/.sqlx/query-0b1543ec93e02c48c5cbaafd391b5812dc2d1d4a52ea3072b5dd52d71637b33d.json
+++ b/.sqlx/query-613199c25e16a52d85761e213750fe202abfa2af5347010dee59d3b8075eb19e.json
@@ -1,6 +1,6 @@
{
"db_name": "SQLite",
- "query": "\n delete\n from token\n where login = $1\n returning id as \"id: Id\"\n ",
+ "query": "\n delete\n from token\n where user = $1\n returning id as \"id: Id\"\n ",
"describe": {
"columns": [
{
@@ -16,5 +16,5 @@
false
]
},
- "hash": "0b1543ec93e02c48c5cbaafd391b5812dc2d1d4a52ea3072b5dd52d71637b33d"
+ "hash": "613199c25e16a52d85761e213750fe202abfa2af5347010dee59d3b8075eb19e"
}
diff --git a/.sqlx/query-c31c02aa8c4e615c463835d188879a394d36e66f90edb27d2665f081ff95087f.json b/.sqlx/query-6755a7bba5733f4a8090bc895dff436d67edf6669a555fe20b178e9ba3039b0c.json
index aa20875..94bc39f 100644
--- a/.sqlx/query-c31c02aa8c4e615c463835d188879a394d36e66f90edb27d2665f081ff95087f.json
+++ b/.sqlx/query-6755a7bba5733f4a8090bc895dff436d67edf6669a555fe20b178e9ba3039b0c.json
@@ -1,6 +1,6 @@
{
"db_name": "SQLite",
- "query": "\n select\n id as \"id: login::Id\",\n display_name as \"display_name: String\",\n canonical_name as \"canonical_name: String\",\n created_sequence as \"created_sequence: Sequence\",\n created_at as \"created_at: DateTime\"\n from login\n where id = $1\n ",
+ "query": "\n select\n id as \"id: login::Id\",\n display_name as \"display_name: String\",\n canonical_name as \"canonical_name: String\",\n created_sequence as \"created_sequence: Sequence\",\n created_at as \"created_at: DateTime\"\n from user\n where id = $1\n ",
"describe": {
"columns": [
{
@@ -40,5 +40,5 @@
false
]
},
- "hash": "c31c02aa8c4e615c463835d188879a394d36e66f90edb27d2665f081ff95087f"
+ "hash": "6755a7bba5733f4a8090bc895dff436d67edf6669a555fe20b178e9ba3039b0c"
}
diff --git a/.sqlx/query-2c20c29d9adfed6201a6a69da95bc8271dfc8c6ec8ebf174ba8a57111b322291.json b/.sqlx/query-9e4e8544c86e36901b4543d84b6ac46f63d2804ef3528d833e6d17bec8864454.json
index ae546ad..beacb24 100644
--- a/.sqlx/query-2c20c29d9adfed6201a6a69da95bc8271dfc8c6ec8ebf174ba8a57111b322291.json
+++ b/.sqlx/query-9e4e8544c86e36901b4543d84b6ac46f63d2804ef3528d833e6d17bec8864454.json
@@ -1,6 +1,6 @@
{
"db_name": "SQLite",
- "query": "\n select\n id as \"id: Id\",\n display_name as \"display_name: String\",\n canonical_name as \"canonical_name: String\",\n created_sequence as \"created_sequence: Sequence\",\n created_at as \"created_at: DateTime\"\n from login\n where login.created_sequence > $1\n ",
+ "query": "\n select\n id as \"id: Id\",\n display_name as \"display_name: String\",\n canonical_name as \"canonical_name: String\",\n created_sequence as \"created_sequence: Sequence\",\n created_at as \"created_at: DateTime\"\n from user\n where created_sequence > $1\n ",
"describe": {
"columns": [
{
@@ -40,5 +40,5 @@
false
]
},
- "hash": "2c20c29d9adfed6201a6a69da95bc8271dfc8c6ec8ebf174ba8a57111b322291"
+ "hash": "9e4e8544c86e36901b4543d84b6ac46f63d2804ef3528d833e6d17bec8864454"
}
diff --git a/.sqlx/query-cbf29fae3725bbb3d9e94d932ace995f53efd6c7800a7a1b42daec41d081b3d2.json b/.sqlx/query-9eb1e7d793fe6a992dc937b041e5b5206628c3f0cd5230f6671bf8d8946d01f2.json
index 9c3c10e..45177f3 100644
--- a/.sqlx/query-cbf29fae3725bbb3d9e94d932ace995f53efd6c7800a7a1b42daec41d081b3d2.json
+++ b/.sqlx/query-9eb1e7d793fe6a992dc937b041e5b5206628c3f0cd5230f6671bf8d8946d01f2.json
@@ -1,6 +1,6 @@
{
"db_name": "SQLite",
- "query": "\n select\n id as \"id: Id\",\n display_name as \"display_name: String\",\n canonical_name as \"canonical_name: String\",\n created_sequence as \"created_sequence: Sequence\",\n created_at as \"created_at: DateTime\"\n from login\n where created_sequence <= $1\n order by canonical_name\n ",
+ "query": "\n select\n id as \"id: Id\",\n display_name as \"display_name: String\",\n canonical_name as \"canonical_name: String\",\n created_sequence as \"created_sequence: Sequence\",\n created_at as \"created_at: DateTime\"\n from user\n where created_sequence <= $1\n order by canonical_name\n ",
"describe": {
"columns": [
{
@@ -40,5 +40,5 @@
false
]
},
- "hash": "cbf29fae3725bbb3d9e94d932ace995f53efd6c7800a7a1b42daec41d081b3d2"
+ "hash": "9eb1e7d793fe6a992dc937b041e5b5206628c3f0cd5230f6671bf8d8946d01f2"
}
diff --git a/.sqlx/query-6d34d8232e7247155c697f7ef7a26f6b14e1d30c3fb44ece8fb149c92317fa91.json b/.sqlx/query-bb1be4fab0d7fa56ae5a8ea977d13047cefdebee841d0df3c671a2104b9aef8f.json
index 93a4093..a32a555 100644
--- a/.sqlx/query-6d34d8232e7247155c697f7ef7a26f6b14e1d30c3fb44ece8fb149c92317fa91.json
+++ b/.sqlx/query-bb1be4fab0d7fa56ae5a8ea977d13047cefdebee841d0df3c671a2104b9aef8f.json
@@ -1,6 +1,6 @@
{
"db_name": "SQLite",
- "query": "\n update token\n set last_used_at = $1\n where secret = $2\n returning\n id as \"token: Id\",\n login as \"login: login::Id\"\n ",
+ "query": "\n update token\n set last_used_at = $1\n where secret = $2\n returning\n id as \"token: Id\",\n user as \"user: login::Id\"\n ",
"describe": {
"columns": [
{
@@ -9,7 +9,7 @@
"type_info": "Text"
},
{
- "name": "login: login::Id",
+ "name": "user: login::Id",
"ordinal": 1,
"type_info": "Text"
}
@@ -22,5 +22,5 @@
false
]
},
- "hash": "6d34d8232e7247155c697f7ef7a26f6b14e1d30c3fb44ece8fb149c92317fa91"
+ "hash": "bb1be4fab0d7fa56ae5a8ea977d13047cefdebee841d0df3c671a2104b9aef8f"
}
diff --git a/.sqlx/query-c2b0ff7e2f27b6970a16fbc233ed32638e853e3b8b8f8de26b53f90c98b6ce11.json b/.sqlx/query-c2b0ff7e2f27b6970a16fbc233ed32638e853e3b8b8f8de26b53f90c98b6ce11.json
deleted file mode 100644
index 4c99c42..0000000
--- a/.sqlx/query-c2b0ff7e2f27b6970a16fbc233ed32638e853e3b8b8f8de26b53f90c98b6ce11.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "db_name": "SQLite",
- "query": "\n update login\n set password_hash = $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": "c2b0ff7e2f27b6970a16fbc233ed32638e853e3b8b8f8de26b53f90c98b6ce11"
-}
diff --git a/.sqlx/query-584aea21a5ceb0ce6e48bc224bfc431f2e517755983f3510565e18ecb0e6e637.json b/.sqlx/query-c58e61c57373a7f19d98c46379d16a29b4d0d1348e31599dc47522849f759066.json
index f443d9a..18d720c 100644
--- a/.sqlx/query-584aea21a5ceb0ce6e48bc224bfc431f2e517755983f3510565e18ecb0e6e637.json
+++ b/.sqlx/query-c58e61c57373a7f19d98c46379d16a29b4d0d1348e31599dc47522849f759066.json
@@ -1,6 +1,6 @@
{
"db_name": "SQLite",
- "query": "\n select\n invite.id as \"invite_id: Id\",\n issuer.id as \"issuer_id: login::Id\",\n issuer.display_name as \"issuer_name: nfc::String\",\n invite.issued_at as \"invite_issued_at: DateTime\"\n from invite\n join login as issuer on (invite.issuer = issuer.id)\n where invite.id = $1\n ",
+ "query": "\n select\n invite.id as \"invite_id: Id\",\n issuer.id as \"issuer_id: login::Id\",\n issuer.display_name as \"issuer_name: nfc::String\",\n invite.issued_at as \"invite_issued_at: DateTime\"\n from invite\n join user as issuer on (invite.issuer = issuer.id)\n where invite.id = $1\n ",
"describe": {
"columns": [
{
@@ -34,5 +34,5 @@
false
]
},
- "hash": "584aea21a5ceb0ce6e48bc224bfc431f2e517755983f3510565e18ecb0e6e637"
+ "hash": "c58e61c57373a7f19d98c46379d16a29b4d0d1348e31599dc47522849f759066"
}
diff --git a/.sqlx/query-e01508e57cc9cecc83640a5518d6364c8dbfdb45f205fecf0734fe272be493b0.json b/.sqlx/query-e01508e57cc9cecc83640a5518d6364c8dbfdb45f205fecf0734fe272be493b0.json
deleted file mode 100644
index 4efac0c..0000000
--- a/.sqlx/query-e01508e57cc9cecc83640a5518d6364c8dbfdb45f205fecf0734fe272be493b0.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "db_name": "SQLite",
- "query": "\n insert\n into login (id, display_name, canonical_name, password_hash, created_sequence, created_at)\n values ($1, $2, $3, $4, $5, $6)\n ",
- "describe": {
- "columns": [],
- "parameters": {
- "Right": 6
- },
- "nullable": []
- },
- "hash": "e01508e57cc9cecc83640a5518d6364c8dbfdb45f205fecf0734fe272be493b0"
-}
diff --git a/.sqlx/query-f9abb172f96bff3a5fb4ad29f3a52be8d3134fc68e37c6074c69970604ae3844.json b/.sqlx/query-f9abb172f96bff3a5fb4ad29f3a52be8d3134fc68e37c6074c69970604ae3844.json
new file mode 100644
index 0000000..9d1bc77
--- /dev/null
+++ b/.sqlx/query-f9abb172f96bff3a5fb4ad29f3a52be8d3134fc68e37c6074c69970604ae3844.json
@@ -0,0 +1,12 @@
+{
+ "db_name": "SQLite",
+ "query": "\n insert\n into user (id, display_name, canonical_name, password_hash, created_sequence, created_at)\n values ($1, $2, $3, $4, $5, $6)\n ",
+ "describe": {
+ "columns": [],
+ "parameters": {
+ "Right": 6
+ },
+ "nullable": []
+ },
+ "hash": "f9abb172f96bff3a5fb4ad29f3a52be8d3134fc68e37c6074c69970604ae3844"
+}
diff --git a/migrations/20250323190045_rename_login_to_user.sql b/migrations/20250323190045_rename_login_to_user.sql
new file mode 100644
index 0000000..7b5861d
--- /dev/null
+++ b/migrations/20250323190045_rename_login_to_user.sql
@@ -0,0 +1,151 @@
+-- message
+-- message_deleted
+
+-- Set up the new `user` table, and copy existing logins into it
+create table user
+(
+ id text
+ not null
+ primary key,
+ display_name text
+ not null,
+ canonical_name text
+ not null
+ unique,
+ password_hash text
+ not null,
+ created_sequence bigint
+ unique
+ not null,
+ created_at text
+ not null
+);
+
+insert into user (id, display_name, canonical_name, password_hash, created_sequence, created_at)
+select id, display_name, canonical_name, password_hash, created_sequence, created_at
+from login;
+
+-- Carry the rename through `token`, preserving data…
+alter table token
+ rename to old_token;
+
+create table token
+(
+ id text
+ not null
+ primary key,
+ secret text
+ not null
+ unique,
+ user text
+ not null,
+ issued_at text
+ not null,
+ last_used_at text
+ not null,
+ foreign key (user)
+ references user (id)
+);
+
+insert into token (id, secret, user, issued_at, last_used_at)
+select id, secret, login, issued_at, last_used_at
+from old_token;
+
+-- Carry the rename through `invite`, preserving data…
+alter table invite
+ rename to old_invite;
+
+create table invite
+(
+ id text
+ primary key
+ not null,
+ issuer text
+ not null
+ references user (id),
+ issued_at text
+ not null
+);
+
+insert into invite (id, issuer, issued_at)
+select id, issuer, issued_at
+from old_invite;
+
+-- Carry the rename through `message`, preserving data…
+alter table message
+ rename to old_message;
+
+create table message
+(
+ id text
+ not null
+ primary key,
+ channel text
+ not null
+ references channel (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, channel, sender, sent_sequence, sent_at, body, last_sequence)
+select id, channel, sender, sent_sequence, sent_at, body, last_sequence
+from old_message;
+
+-- Recreating `message` entails recreating `message_deleted`
+alter table message_deleted
+ rename to old_message_deleted;
+
+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;
+
+-- Delete old tables (which will take old indices with them)
+drop table old_message_deleted;
+drop table old_message;
+drop table old_invite;
+drop table old_token;
+drop table login;
+
+-- Recreate indices
+create index message_deleted_deleted_at
+ on message_deleted (deleted_at);
+
+create index message_sent_at
+ on message (sent_at);
+create index message_channel
+ on message (channel);
+create index message_last_sequence
+ on message (last_sequence);
+
+create index invite_issued_at
+ on invite (issued_at);
+
+create index token_issued_at
+ on token (issued_at);
+create index token_last_used_at
+ on token (last_used_at);
+create index token_user
+ on token (user);
diff --git a/src/invite/repo.rs b/src/invite/repo.rs
index c1dc701..c716ed9 100644
--- a/src/invite/repo.rs
+++ b/src/invite/repo.rs
@@ -74,7 +74,7 @@ impl Invites<'_> {
issuer.display_name as "issuer_name: nfc::String",
invite.issued_at as "invite_issued_at: DateTime"
from invite
- join login as issuer on (invite.issuer = issuer.id)
+ join user as issuer on (invite.issuer = issuer.id)
where invite.id = $1
"#,
invite,
diff --git a/src/login/repo.rs b/src/login/repo.rs
index 03f2c17..128d6b8 100644
--- a/src/login/repo.rs
+++ b/src/login/repo.rs
@@ -34,7 +34,7 @@ impl Logins<'_> {
sqlx::query!(
r#"
insert
- into login (id, display_name, canonical_name, password_hash, created_sequence, created_at)
+ into user (id, display_name, canonical_name, password_hash, created_sequence, created_at)
values ($1, $2, $3, $4, $5, $6)
"#,
id,
@@ -67,7 +67,7 @@ impl Logins<'_> {
sqlx::query_scalar!(
r#"
- update login
+ update user
set password_hash = $1
where id = $2
returning id as "id: Id"
@@ -90,7 +90,7 @@ impl Logins<'_> {
canonical_name as "canonical_name: String",
created_sequence as "created_sequence: Sequence",
created_at as "created_at: DateTime"
- from login
+ from user
where created_sequence <= $1
order by canonical_name
"#,
@@ -122,8 +122,8 @@ impl Logins<'_> {
canonical_name as "canonical_name: String",
created_sequence as "created_sequence: Sequence",
created_at as "created_at: DateTime"
- from login
- where login.created_sequence > $1
+ from user
+ where created_sequence > $1
"#,
resume_at,
)
diff --git a/src/setup/repo.rs b/src/setup/repo.rs
index ac01496..c4f5fd8 100644
--- a/src/setup/repo.rs
+++ b/src/setup/repo.rs
@@ -17,7 +17,7 @@ impl Setup<'_> {
let completed = sqlx::query_scalar!(
r#"
select count(*) > 0 as "completed: bool"
- from login
+ from user
"#,
)
.fetch_one(&mut *self.0)
diff --git a/src/token/repo/auth.rs b/src/token/repo/auth.rs
index 0deed10..8900704 100644
--- a/src/token/repo/auth.rs
+++ b/src/token/repo/auth.rs
@@ -32,7 +32,7 @@ impl Auth<'_> {
created_sequence as "created_sequence: Sequence",
created_at as "created_at: DateTime",
password_hash as "password_hash: StoredHash"
- from login
+ from user
where canonical_name = $1
"#,
name,
@@ -61,7 +61,7 @@ impl Auth<'_> {
created_sequence as "created_sequence: Sequence",
created_at as "created_at: DateTime",
password_hash as "password_hash: StoredHash"
- from login
+ from user
where id = $1
"#,
login.id,
diff --git a/src/token/repo/token.rs b/src/token/repo/token.rs
index ff42fad..3428030 100644
--- a/src/token/repo/token.rs
+++ b/src/token/repo/token.rs
@@ -37,7 +37,7 @@ impl Tokens<'_> {
let secret = sqlx::query_scalar!(
r#"
insert
- into token (id, secret, login, issued_at, last_used_at)
+ into token (id, secret, user, issued_at, last_used_at)
values ($1, $2, $3, $4, $4)
returning secret as "secret!: Secret"
"#,
@@ -91,7 +91,7 @@ impl Tokens<'_> {
r#"
delete
from token
- where login = $1
+ where user = $1
returning id as "id: Id"
"#,
login,
@@ -139,12 +139,12 @@ impl Tokens<'_> {
where secret = $2
returning
id as "token: Id",
- login as "login: login::Id"
+ user as "user: login::Id"
"#,
used_at,
secret,
)
- .map(|row| (row.token, row.login))
+ .map(|row| (row.token, row.user))
.fetch_one(&mut *self.0)
.await?;
@@ -156,7 +156,7 @@ impl Tokens<'_> {
canonical_name as "canonical_name: String",
created_sequence as "created_sequence: Sequence",
created_at as "created_at: DateTime"
- from login
+ from user
where id = $1
"#,
login,