Arrakis
A Rust client library for the Dune Analytics API.
Features
- Async & Blocking Clients - Choose between async (tokio) or synchronous APIs
- Execute SQL Queries - Run arbitrary SQL queries against Dune's data warehouse
- Execute Saved Queries - Run pre-saved queries by ID with optional parameters
- Pipeline Execution - Execute query pipelines with dependencies
- Results Management - Fetch results in JSON or CSV format with pagination support
- Execution Control - Cancel ongoing executions and track execution state
- Convenience Methods - High-level methods like
run_sql()that handle polling automatically
Installation
Add this to your Cargo.toml:
[]
= "0.5"
This enables both the async and blocking clients; no extra feature flags are required.
Quick Start
Async Client
use DuneClient;
async
Blocking Client
use DuneClient;
Usage
Execute SQL Query
use DuneClient;
let client = new;
// Simple execution - returns immediately with execution_id
let response = client.execute_sql.await?;
println!;
// Wait for results with timeout
let results = client.wait_for_results.await?;
Execute Saved Query
use ;
let client = new;
// Execute a saved query with parameters
let params = vec!;
let response = client.execute_query.await?;
let results = client.run_query.await?;
Get Results in CSV Format
let csv_data = client.get_execution_results_csv.await?;
Cancel Execution
client.cancel_execution.await?;
Check Execution Status
let status = client.get_execution_status.await?;
match status.state
API Coverage
| Endpoint | Method |
|---|---|
| Execute SQL | execute_sql() |
| Execute Saved Query | execute_query() |
| Execute Pipeline | execute_pipeline() |
| Get Execution Status | get_execution_status() |
| Get Execution Results (JSON) | get_execution_results() |
| Get Execution Results (CSV) | get_execution_results_csv() |
| Get Latest Query Results | get_latest_results() |
| Get Latest Query Results (CSV) | get_latest_results_csv() |
| Cancel Execution | cancel_execution() |
Examples
See the examples directory for more usage patterns:
# Run the async example
DUNE_API_KEY=your_key
# Run the blocking example
DUNE_API_KEY=your_key
License
Licensed under either of:
- Apache License, Version 2.0 (LICENSE or http://www.apache.org/licenses/LICENSE-2.0)
at your option.