pg-api 0.1.0

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

#[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";

    // Transaction with multiple operations
    let response = client
        .post(format!("{}/v1/transaction", api_url))
        .header("Authorization", format!("Bearer {}", api_token))
        .json(&json!({
            "queries": [
                {
                    "query": "INSERT INTO accounts (name, balance) VALUES ($1, $2) RETURNING id",
                    "params": ["Alice", 1000.00]
                },
                {
                    "query": "INSERT INTO accounts (name, balance) VALUES ($1, $2) RETURNING id",
                    "params": ["Bob", 500.00]
                },
                {
                    "query": "INSERT INTO transactions (from_account, to_account, amount) VALUES ($1, $2, $3)",
                    "params": [1, 2, 100.00]
                },
                {
                    "query": "UPDATE accounts SET balance = balance - $1 WHERE id = $2",
                    "params": [100.00, 1]
                },
                {
                    "query": "UPDATE accounts SET balance = balance + $1 WHERE id = $2",
                    "params": [100.00, 2]
                }
            ],
            "database": "main"
        }))
        .send()
        .await?;

    if response.status().is_success() {
        let result: serde_json::Value = response.json().await?;
        println!("Transaction completed successfully!");
        println!("Results: {}", serde_json::to_string_pretty(&result)?);
    } else {
        println!("Transaction failed: {}", response.status());
        println!("Response: {}", response.text().await?);
    }

    Ok(())
}