pg-api 0.1.0

A high-performance PostgreSQL REST API driver with rate limiting, connection pooling, and observability
use reqwest;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = reqwest::Client::new();
    let api_url = "http://localhost:8580";
    let api_token = "sk_live_your_token_here";
    let database = "main";

    // List all databases
    let response = client
        .get(format!("{}/v1/databases", api_url))
        .header("Authorization", format!("Bearer {}", api_token))
        .send()
        .await?;

    if response.status().is_success() {
        let databases: serde_json::Value = response.json().await?;
        println!("Available databases:");
        println!("{}", serde_json::to_string_pretty(&databases)?);
    }

    // List tables in a database
    let response = client
        .get(format!("{}/v1/databases/{}/tables", api_url, database))
        .header("Authorization", format!("Bearer {}", api_token))
        .send()
        .await?;

    if response.status().is_success() {
        let tables: serde_json::Value = response.json().await?;
        println!("\nTables in '{}' database:", database);
        println!("{}", serde_json::to_string_pretty(&tables)?);
    }

    // Get full database schema
    let response = client
        .get(format!("{}/v1/databases/{}/schema", api_url, database))
        .header("Authorization", format!("Bearer {}", api_token))
        .send()
        .await?;

    if response.status().is_success() {
        let schema: serde_json::Value = response.json().await?;
        println!("\nDatabase schema for '{}':", database);
        println!("{}", serde_json::to_string_pretty(&schema)?);
    }

    Ok(())
}