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/token | |
| 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/token')
| -rw-r--r-- | src/token/repo/auth.rs | 28 | ||||
| -rw-r--r-- | src/token/repo/token.rs | 17 |
2 files changed, 24 insertions, 21 deletions
diff --git a/src/token/repo/auth.rs b/src/token/repo/auth.rs index 600855d..a42fa1a 100644 --- a/src/token/repo/auth.rs +++ b/src/token/repo/auth.rs @@ -28,13 +28,14 @@ impl Auth<'_> { r#" select id as "id: user::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", - password_hash as "password_hash: StoredHash" + 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", + login.password as "password: StoredHash" from user - where canonical_name = $1 + join login using (id) + where login.canonical_name = $1 "#, name, ) @@ -49,7 +50,7 @@ impl Auth<'_> { created: Instant::new(row.created_at, row.created_sequence), }; - Ok((login, row.password_hash)) + Ok((login, row.password)) } pub async fn for_user(&mut self, user: &User) -> Result<(History, StoredHash), LoadError> { @@ -57,12 +58,13 @@ impl Auth<'_> { r#" select id as "id: user::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", - password_hash as "password_hash: StoredHash" + 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", + login.password as "password: StoredHash" from user + join login using (id) where id = $1 "#, user.id, @@ -78,7 +80,7 @@ impl Auth<'_> { created: Instant::new(row.created_at, row.created_sequence), }; - Ok((user, row.password_hash)) + Ok((user, row.password)) } } diff --git a/src/token/repo/token.rs b/src/token/repo/token.rs index 7ac4ac5..5368fee 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, user, issued_at, last_used_at) + into token (id, secret, login, 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 user = $1 + where login = $1 returning id as "id: Id" "#, user, @@ -139,12 +139,12 @@ impl Tokens<'_> { where secret = $2 returning id as "token: Id", - user as "user: user::Id" + login as "login: user::Id" "#, used_at, secret, ) - .map(|row| (row.token, row.user)) + .map(|row| (row.token, row.login)) .fetch_one(&mut *self.0) .await?; @@ -152,11 +152,12 @@ impl Tokens<'_> { r#" select id as "id: user::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 + join login using (id) where id = $1 "#, user, |
