supabase_management_rs/
supavisor.rs

1use serde::{Deserialize, Serialize};
2
3use crate::Client;
4
5impl Client {
6    pub async fn get_supavisor_details(
7        &self,
8        project_id: &str,
9    ) -> Result<Vec<SupavisorConfig>, crate::Error> {
10        self.get(format!("projects/{project_id}/config/database/pooler"))
11            .await
12    }
13}
14
15#[derive(Debug, Serialize, Deserialize, Clone, Copy)]
16#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
17pub enum DatabaseType {
18    Primary,
19    ReadReplica,
20}
21
22#[derive(Debug, Serialize, Deserialize, Clone, Copy)]
23#[serde(rename_all = "lowercase")]
24pub enum PoolMode {
25    Transaction,
26    Session,
27}
28
29#[derive(Debug, Serialize, Deserialize, Clone)]
30pub struct SupavisorConfig {
31    pub database_type: DatabaseType,
32    pub db_port: i32,
33    pub default_pool_size: Option<i32>,
34    pub max_client_conn: Option<i32>,
35    pub identifier: String,
36    pub is_using_scram_auth: bool,
37    pub db_user: String,
38    pub db_host: String,
39    pub db_name: String,
40    pub pool_mode: PoolMode,
41}