use pulse_client::{IQQueryOptions, IQScanOptions, PulseClient};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = PulseClient::builder().base_url(base_url()).build()?;
let agent = "merchant-rollups-1m";
println!("Summary: {}", client.iq().summary(agent).await?);
println!(
"merchant-7: {}",
client.iq().get(agent, "merchant-7").await?
);
let scan = client
.iq()
.scan(
agent,
IQScanOptions {
limit: Some(10),
..Default::default()
},
)
.await?;
println!("Scan (first 10): {scan}");
let result = client
.iq()
.query(
agent,
IQQueryOptions {
filter: Some(
serde_json::json!({"field": "total_amount", "op": "gt", "value": 1000}),
),
group_by: Some("region".to_string()),
limit: Some(20),
..Default::default()
},
)
.await?;
println!("High-volume merchants by region: {result}");
Ok(())
}
fn base_url() -> String {
std::env::var("PULSE_URL").unwrap_or_else(|_| "http://localhost:9090".to_string())
}