This is a Rust client to InfluxDB using the 2.0 API.
This project is a fork from the https://github.com/influxdata/influxdbiox/tree/main/influxdb2client project. At the time of this writing, the query functionality of the influxdb2 client from the official repository isn't working. So, I created this client to use it in my project.
```rust use chrono::{DateTime, FixedOffset}; use influxdb2::Client; use influxdb2::models::Query; use structmap::FromMap;
pub struct StockPrice {
ticker: String,
value: f64,
time: DateTime
impl Default for StockPrice { fn default() -> Self { Self { ticker: "".tostring(), value: 0f64, time: chrono::MINDATETIME.withtimezone(&chrono::FixedOffset::east(7 * 3600)), } } }
async fn example() -> Result<(), Box
let qs = format!("from(bucket: \"stock-prices\")
|> range(start: -1w)
|> filter(fn: (r) => r.ticker == \"{}\")
|> last()
", "AAPL");
let query = Query::new(qs.to_string());
let res: Vec<StockPrice> = client.query::<StockPrice>(Some(query))
.await?;
println!("{:?}", res);
Ok(())
} ```
```rust
async fn example() -> Result<(), Box
let host = std::env::var("INFLUXDB_HOST").unwrap();
let org = std::env::var("INFLUXDB_ORG").unwrap();
let token = std::env::var("INFLUXDB_TOKEN").unwrap();
let bucket = "bucket";
let client = Client::new(host, org, token);
let points = vec![
DataPoint::builder("cpu")
.tag("host", "server01")
.field("usage", 0.5)
.build()?,
DataPoint::builder("cpu")
.tag("host", "server01")
.tag("region", "us-west")
.field("usage", 0.87)
.build()?,
];
client.write(bucket, stream::iter(points)).await?;
Ok(())
} ```