influx-client

Crates.ioinflux-client
lib.rsinflux-client
version0.4.1
sourcesrc
created_at2021-02-21 21:01:45.22315
updated_at2023-01-24 21:14:50.930037
descriptionA Rust library to interact with InfluxDB
homepage
repositoryhttps://github.com/ctiedt/influx_client
max_upload_size
id358658
size54,870
Clemens Tiedt (ctiedt)

documentation

README

influx_client

crates-badge docs-badge

A Rust library to interact with InfluxDB databases. It is still early in development, so expect bugs and missing features.

Things that work

  • Writing data to a bucket
  • Querying data in a certain time range (only relative so far)
  • Using filters in queries

Examples

Writing to a bucket:

use std::{collections::HashMap, time::SystemTime};

use influx_client::{
    Client, InfluxError, Precision, WriteQuery,
};

fn main() -> Result<(), InfluxError> {
    let client = Client::from_env("http://localhost:8086").expect("INFLUXDB_TOKEN not set");
    let mut tags = HashMap::new();
    tags.insert("t1", "v1");
    tags.insert("t2", "v2");
    let data = WriteQuery {
        name: "test",
        tags,
        field_name: "i",
        value: 42,
        timestamp: Some((SystemTime::now(), Precision::ns)),
    };

    client.insert("home", "home", Precision::ms, data)?;
}

Reading from a bucket:

use influx_client::{
    flux::functions::{NumericFilter, Range, StringFilter},
    Client, InfluxError, Precision, ReadQuery,
};

fn main() -> Result<(), InfluxError> {
    let client = Client::from_env("http://localhost:8086").expect("INFLUXDB_TOKEN not set");
    
    let q = ReadQuery::new("home")
        .range(Range::new(Some((-12, Precision::h)), None))
        .filter(StringFilter::Eq("_measurement", "test"))
        .filter(NumericFilter::Lt("_value", 99));

    println!("{}", client.get("home", q)?);
    Ok(())
}

Commit count: 14

cargo fmt