diff options
| author | Owen Jacobson <owen@grimoire.ca> | 2025-08-24 15:35:39 -0400 |
|---|---|---|
| committer | Owen Jacobson <owen@grimoire.ca> | 2025-08-26 01:06:48 -0400 |
| commit | 218d6dbb56727721d19019c8514f5e4395596e98 (patch) | |
| tree | 9790c8433e169c7345717538ac7a54d187579b0b /src/user | |
| parent | c52e24f17ed615b2e2dd55a285eb272014a2ccbf (diff) | |
Split the `user` table into an authentication portion and a chat portion.
We'll be building separate entities around this in future commits, to better separate the authentication data (non-synchronized and indeed "not public") from the chat data (synchronized and public).
Diffstat (limited to 'src/user')
| -rw-r--r-- | src/user/repo.rs | 47 |
1 files changed, 29 insertions, 18 deletions
diff --git a/src/user/repo.rs b/src/user/repo.rs index 0f67e9a..bfb603d 100644 --- a/src/user/repo.rs +++ b/src/user/repo.rs @@ -25,7 +25,7 @@ impl Users<'_> { pub async fn create( &mut self, name: &Name, - password_hash: &StoredHash, + password: &StoredHash, created: &Instant, ) -> Result<History, sqlx::Error> { let id = Id::generate(); @@ -34,14 +34,23 @@ impl Users<'_> { sqlx::query!( r#" - insert - into user (id, display_name, canonical_name, password_hash, created_sequence, created_at) - values ($1, $2, $3, $4, $5, $6) + insert into login (id, display_name, canonical_name, password) + values ($1, $2, $3, $4) "#, id, display_name, canonical_name, - password_hash, + password, + ) + .execute(&mut *self.0) + .await?; + + sqlx::query!( + r#" + insert into user (id, created_sequence, created_at) + values ($1, $2, $3) + "#, + id, created.sequence, created.at, ) @@ -68,8 +77,8 @@ impl Users<'_> { sqlx::query_scalar!( r#" - update user - set password_hash = $1 + update login + set password = $1 where id = $2 returning id as "id: Id" "#, @@ -87,13 +96,14 @@ impl Users<'_> { r#" select id as "id: Id", - display_name as "display_name: String", - canonical_name as "canonical_name: String", - created_sequence as "created_sequence: Sequence", - created_at as "created_at: DateTime" + login.display_name as "display_name: String", + login.canonical_name as "canonical_name: String", + user.created_sequence as "created_sequence: Sequence", + user.created_at as "created_at: DateTime" from user - where created_sequence <= $1 - order by canonical_name + join login using (id) + where user.created_sequence <= $1 + order by canonical_name "#, resume_at, ) @@ -119,12 +129,13 @@ impl Users<'_> { r#" select id as "id: Id", - display_name as "display_name: String", - canonical_name as "canonical_name: String", - created_sequence as "created_sequence: Sequence", - created_at as "created_at: DateTime" + login.display_name as "display_name: String", + login.canonical_name as "canonical_name: String", + user.created_sequence as "created_sequence: Sequence", + user.created_at as "created_at: DateTime" from user - where created_sequence > $1 + join login using (id) + where user.created_sequence > $1 "#, resume_at, ) |
