torii_storage_postgres/
password.rs1use crate::PostgresStorage;
2use async_trait::async_trait;
3use torii_core::UserId;
4use torii_core::error::StorageError;
5use torii_core::storage::PasswordStorage;
6
7#[async_trait]
8impl PasswordStorage for PostgresStorage {
9 type Error = StorageError;
10
11 async fn set_password_hash(
12 &self,
13 user_id: &UserId,
14 hash: &str,
15 ) -> Result<(), <Self as PasswordStorage>::Error> {
16 sqlx::query("UPDATE users SET password_hash = $1 WHERE id = $2")
17 .bind(hash)
18 .bind(user_id.as_str())
19 .execute(&self.pool)
20 .await
21 .map_err(|_| StorageError::Database("Failed to set password hash".to_string()))?;
22 Ok(())
23 }
24
25 async fn get_password_hash(
26 &self,
27 user_id: &UserId,
28 ) -> Result<Option<String>, <Self as PasswordStorage>::Error> {
29 let result = sqlx::query_scalar("SELECT password_hash FROM users WHERE id = $1")
30 .bind(user_id.as_str())
31 .fetch_optional(&self.pool)
32 .await
33 .map_err(|_| StorageError::Database("Failed to get password hash".to_string()))?;
34 Ok(result)
35 }
36}