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    async fn set_password_hash(
10        &self,
11        user_id: &UserId,
12        hash: &str,
13    ) -> Result<(), torii_core::Error> {
14        sqlx::query("UPDATE users SET password_hash = $1 WHERE id::text = $2")
15            .bind(hash)
16            .bind(user_id.as_str())
17            .execute(&self.pool)
18            .await
19            .map_err(|_| StorageError::Database("Failed to set password hash".to_string()))?;
20        Ok(())
21    }
22
23    async fn get_password_hash(
24        &self,
25        user_id: &UserId,
26    ) -> Result<Option<String>, torii_core::Error> {
27        let result = sqlx::query_scalar("SELECT password_hash FROM users WHERE id::text = $1")
28            .bind(user_id.as_str())
29            .fetch_optional(&self.pool)
30            .await
31            .map_err(|_| StorageError::Database("Failed to get password hash".to_string()))?;
32        Ok(result)
33    }
34}