datapress-client 0.4.24

Async + blocking Rust client for a running DataPress dataset server (JSON and Arrow IPC).
Documentation

datapress-client

Async + blocking Rust client for a running DataPress dataset server. Wraps the JSON and Arrow IPC HTTP endpoints.

Features

  • arrow (default) — decode Arrow IPC stream responses into arrow::record_batch::RecordBatch.
  • blocking (default) — synchronous blocking::Client backed by a private current-thread Tokio runtime.

Disable defaults for an async-only, reqwest + serde build:

datapress-client = { version = "0.4", default-features = false }

Async

use datapress_client::{Client, QueryRequest, Predicate};

# async fn run() -> datapress_client::Result<()> {
let client = Client::new("http://127.0.0.1:8000")?;
let names = client.datasets().await?;

let req = QueryRequest::builder()
    .columns(["State", "Severity"])
    .predicate(Predicate::new("Severity", "gte", 3))
    .page_size(10_000)
    .build();
let resp = client.query_json("accidents", &req).await?;
println!("{} rows", resp.data.len());
# Ok(())
# }

Blocking

use datapress_client::blocking::Client;

# fn run() -> datapress_client::Result<()> {
let client = Client::new("http://127.0.0.1:8000")?;
let count = client.count("accidents", &[])?;
println!("{count} rows");
# Ok(())
# }

Arrow

# use datapress_client::{Client, QueryRequest};
# async fn run(client: Client, req: QueryRequest) -> datapress_client::Result<()> {
let batches = client.query_arrow("accidents", &req).await?;
for batch in &batches {
    println!("{} rows x {} cols", batch.num_rows(), batch.num_columns());
}
# Ok(())
# }

Endpoints covered

Method Endpoint
healthz / readyz GET /healthz, GET /readyz (root)
datasets GET {api}/datasets
schema GET {api}/datasets/{name}/schema
count POST {api}/datasets/{name}/count
query_json POST {api}/datasets/{name}/query
query_arrow POST {api}/datasets/{name}/query/stream (Arrow IPC)
sql POST {api}/sql
reload POST {api}/datasets/{name}/reload

{api} defaults to /api/v1 (configurable via ClientBuilder::api_base).

License

MIT