5 releases (3 stable)
2.0.1 | Aug 15, 2022 |
---|---|
2.0.0 | Jan 20, 2022 |
1.0.0 | Jan 20, 2022 |
0.1.2 | Jan 18, 2022 |
0.1.1 | Jun 1, 2021 |
#392 in Database interfaces
35 downloads per month
20KB
478 lines
Creating a client
let client = InfluxClient::builder("www.example.com", "example-key", "example-org").build().unwrap();
Writing data
let measurement = Measurement::builder("m1")
.tag("tag1", "tag1_value")
.tag("tag2", "tag2_value")
.field("field1", "string_value")
.field("field2", true)
.timestamp_ms(1622493622) // milliseconds since the Unix epoch
.build()
.unwrap();
let response = client
.write("example-bucket", &[measurement]) // can post a batch if we want
.await
.unwrap();
Querying data
let response = client
.query(
Query::new(r#"from(bucket: "example-bucket")"#)
.then(r#"range(start: 1622493322, stop: 1622493922)"#)
.then(r#"filter(fn: (r) => r["_measurement"] == "m1")"#),
)
.await
.unwrap();
When querying data, a Vec<HashMap<String, String>>
is returned, containing individual csv records:
{
"result": "_result",
"_value": "string_value",
"table": "0",
"_start": "2021-06-01T11:13:15Z",
"_field": "field1",
"tag1": "tag1_value",
"tag2": "tag2_value",
"_time": "2021-06-01T11:16:05.684Z",
"_measurement": "m1",
"_stop": "2021-06-01T11:23:15Z",
}
Dependencies
~16–23MB
~457K SLoC