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";
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(())
}