ReductStore Client SDK for Rust

This package provides an HTTP client for interacting with the ReductStore, time-series
database for unstructured data.
Features
Example
use futures_util::stream::StreamExt;
use reduct_rs::{QuotaType, ReductClient, ReductError};
use serde_json::json;
use std::pin::pin;
use std::time::{Duration, SystemTime};
use tokio;
#[tokio::main]
async fn main() -> Result<(), ReductError> {
let client = ReductClient::builder()
.url("http://127.0.0.1:8383")
.api_token("my-token")
.build();
let bucket = client
.create_bucket("my-bucket")
.quota_type(QuotaType::FIFO)
.quota_size(1_000_000_000)
.exist_ok(true)
.send()
.await?;
let start = SystemTime::now();
bucket
.write_record("sensor-1")
.data("<Blob data>")
.timestamp(start)
.add_label("score", 10)
.send()
.await?;
bucket
.write_record("sensor-1")
.data("<Blob data>")
.timestamp(start + Duration::from_secs(1))
.add_label("score", 20)
.send()
.await?;
let query = bucket
.query("sensor-1")
.start(start)
.stop(start + Duration::from_secs(2))
.when(json!({"&score": {"$gt": 15}}))
.send()
.await?;
let mut query = pin!(query);
while let Some(record) = query.next().await {
let record = record?;
println!("Record timestamp: {:?}", record.timestamp());
println!("Record size: {}", record.content_length());
println!("{:?}", record.bytes().await?);
}
Ok(())
}
For more examples, see the Guides section in the ReductStore documentation.
Supported ReductStore Versions and Backward Compatibility
The library is backward compatible with the previous versions. However, some methods have been deprecated and will be
removed in the future releases. Please refer to the Changelog for more details.
The SDK supports the following ReductStore API versions:
It can work with newer and older versions, but it is not guaranteed that all features will work as expected because
the API may change and some features may be deprecated or the SDK may not support them yet.