16 releases
new 0.3.1 | Jan 12, 2025 |
---|---|
0.3.0 | Dec 28, 2024 |
0.2.12 | Dec 17, 2024 |
0.2.11 | Oct 18, 2024 |
0.2.4 | Mar 21, 2024 |
#2051 in Database interfaces
374 downloads per month
Used in 3 crates
(2 directly)
22KB
558 lines
rqlite-rs
rqlite-rs is a Rust client for rqlite, the distributed relational database built on SQLite, providing an async interface for seamless integration with Rust's async ecosystems. Utilizing reqwest for efficient connection management, it offers a Rustic, high-level API for easy and efficient interaction with rqlite clusters.
Features
- Asynchronous Interface: Fully async, compatible with Tokio, async-std, and smol.
- Connection Pooling: Efficient management of connections to the rqlite cluster.
- High-Level API: Simplifies interactions with the rqlite API.
- Resilience: Automatic failover to a secondary node on connectivity issues.
- Cluster Management: Full control over the cluster with node query and management features.
Installation
Add to your Cargo.toml
:
[dependencies]
...
+ rqlite-rs = "0.6.0"
Quick Start
Ensure you have a running rqlite cluster. Replace localhost:4001
and localhost:4002
with your node addresses:
use rqlite_rs::prelude::*;
#[derive(FromRow)]
pub struct Table {
name: String,
}
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let client = RqliteClientBuilder::new()
.known_host("localhost:4001")
.build()?;
let query = rqlite_rs::query!(
"SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%'"
)?;
let rows = client.fetch(query).await?;
let tables = rows.into_typed::<Table>()?;
for table in tables {
println!("Table: {}", table.name);
}
Ok(())
}
Resilience
rqlite-rs supports automatic failover to a different node in the cluster. This can be done using one of the provided fallback strategies (e.g., Random
, RoundRobin
, Priority
).
Furthermore you can also implement your own fallback strategy by implementing the FallbackStrategy
trait. An example of this can be found in the custom_fallback example.
Documentation
For detailed API documentation and advanced usage, visit rqlite-rs documentation.
Contributing
Contributions are welcome!
License
rqlite-rs is licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Dependencies
~0.7–1.6MB
~34K SLoC