use serde::Deserialize;
use crate::error::{Result, SupabaseError};
use crate::universals::{HttpMethod, RequestOptions};
use crate::SupabaseClient;
#[deprecated(since = "0.5.0", note = "use `rust_supabase_sdk::User`")]
#[derive(Debug, Clone, Deserialize)]
pub struct SupabaseUser {
pub id: String,
pub email: String,
#[serde(default)]
pub name: Option<String>,
pub created_at: String,
}
impl SupabaseClient {
#[deprecated(since = "0.5.0", note = "use `client.auth().admin().list_users(page, per_page)`")]
#[allow(deprecated)]
pub async fn get_all_users(&self) -> Result<Vec<SupabaseUser>> {
let response = self
.request_with(
"/auth/v1/admin/users",
HttpMethod::Get,
None,
&RequestOptions::auth(),
)
.await?;
let users_value = response
.get("users")
.cloned()
.ok_or_else(|| SupabaseError::Unexpected("Missing `users` field in response".into()))?;
serde_json::from_value(users_value).map_err(|e| SupabaseError::Decode {
message: format!("Failed to deserialize users: {e}"),
body: response.to_string(),
})
}
#[deprecated(since = "0.5.0", note = "use `client.auth().admin().get_user_by_id(user_id)`")]
#[allow(deprecated)]
pub async fn get_user_by_id(&self, user_id: &str) -> Result<SupabaseUser> {
let response = self
.request_with(
&format!("/auth/v1/admin/users/{user_id}"),
HttpMethod::Get,
None,
&RequestOptions::auth(),
)
.await?;
serde_json::from_value(response.clone()).map_err(|e| SupabaseError::Decode {
message: format!("Failed to deserialize user: {e}"),
body: response.to_string(),
})
}
}