Skip to content

Client and models for interacting with InfluxDb 2.0

License

Notifications You must be signed in to change notification settings

ijagberg/influx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

influxrs

This crate contains some useful structs for publishing data to, and reading data from InfluxDB.

Model

The Measurement struct represents a single measurement in Influx. Recommended way to create a Measurement is to use the Measurement::builder function.

let measurement = Measurement::builder("m1")
    .tag("tag1", "tag1_value")
    .tag("tag2", "tag2_value")
    .field("field1", "string_value")
    .field("field2", true)
    .timestamp_ms(1622493622000) // milliseconds since the Unix epoch
    .build()
    .unwrap();
// convert it to InfluxDB line protocol
let line = measurement.to_line_protocol();

Client

WARNING: The client is very rudimentary (it is just a thin and dumb wrapper around an HTTP client), and it is probably better to just write your own instead.

Enable the client feature to gain access to a very simple client struct that simplifies writing and reading data from a specified InfluxDB instance.

Creating a client

let client = InfluxClient::builder("www.example.com", "example-key", "example-org").build().unwrap();

Writing data

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"
}

About

Client and models for interacting with InfluxDb 2.0

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages