22 releases
0.4.5 | Jan 10, 2023 |
---|---|
0.4.5-alpha.0 | Jun 16, 2022 |
0.4.4 | May 18, 2022 |
0.4.3 | Mar 24, 2022 |
0.3.7 | Jul 14, 2021 |
#601 in Web programming
87 downloads per month
Used in bailongma
280KB
6.5K
SLoC
libtaos - yet another TDengine connector for Rust
Crates.io Version | Crates.io Downloads | CodeCov |
---|---|---|
Thanks @songtianyi for libtdengine - a rust bindings project for TDengine.
It's an new design for TDengine rust client based on C interface or the REST API. It'll will provide Rust-like APIs and all rust things (like async/stream/iterators and others).
Dependencies
- Rust of course.
if you use the default features, it'll depend on:
- TDengine Client library and headers.
- clang because bindgen will requires the clang AST library.
Features
In-design features:
- API for both C interface
- REST API support by feature
rest
. - r2d2 Pool support by feature
r2d2
- Schemaless insert support
- Iterators for fields fetching
- Stream support
- Subscribe support
Build and test
cargo build
cargo test
test
will use default TDengine user and password on localhost (TDengine default).
Set variables if it's not default:
TEST_TAOS_IP
TEST_TAOS_PORT
TEST_TAOS_USER
TEST_TAOS_PASS
TEST_TAOS_DB
Usage
For default C-based client API, set in Cargo.toml
[dependencies]
libtaos = "*"
For r2d2 support:
[dependencies]
libtaos = { version = "*", features = ["r2d2"] }
For REST client:
[dependencies]
libtaos = { version = "*", features = ["rest"] }
There's a demo app in examples directory, looks like this:
// ...
#[tokio::main]
async fn main() -> Result<(), Error> {
init();
let taos = taos_connect()?;
assert_eq!(
taos.query("drop database if exists demo").await.is_ok(),
true
);
assert_eq!(taos.query("create database demo").await.is_ok(), true);
assert_eq!(taos.query("use demo").await.is_ok(), true);
assert_eq!(
taos.query("create table m1 (ts timestamp, speed int)")
.await
.is_ok(),
true
);
for i in 0..10i32 {
assert_eq!(
taos.query(format!("insert into m1 values (now+{}s, {})", i, i).as_str())
.await
.is_ok(),
true
);
}
let rows = taos.query("select * from m1").await?;
println!("{}", rows.column_meta.into_iter().map(|col| col.name).join(","));
for row in rows.rows {
println!("{}", row.into_iter().join(","));
}
Ok(())
}
Contribution
Welcome for all contributions.
License
Keep same with TDengine.
Dependencies
~7–19MB
~278K SLoC