torii_storage_postgres/
password.rs

1use 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}