supabase-management-rs 0.0.4

Lightweight Rust client for Supabase's management API
Documentation
use serde::{Deserialize, Serialize};

use crate::Client;

impl Client {
    pub async fn get_supavisor_details(
        &self,
        project_id: &str,
    ) -> Result<Vec<SupavisorConfig>, crate::Error> {
        self.get(format!("projects/{project_id}/config/database/pooler"))
            .await
    }
}

#[derive(Debug, Serialize, Deserialize, Clone, Copy)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum DatabaseType {
    Primary,
    ReadReplica,
}

#[derive(Debug, Serialize, Deserialize, Clone, Copy)]
#[serde(rename_all = "lowercase")]
pub enum PoolMode {
    Transaction,
    Session,
}

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct SupavisorConfig {
    pub database_type: DatabaseType,
    pub db_port: i32,
    pub default_pool_size: Option<i32>,
    pub max_client_conn: Option<i32>,
    pub identifier: String,
    pub is_using_scram_auth: bool,
    pub db_user: String,
    pub db_host: String,
    pub db_name: String,
    pub pool_mode: PoolMode,
}