1 unstable release
new 0.1.18 | Apr 26, 2024 |
---|---|
0.1.17 |
|
0.1.9 |
|
#1151 in Database interfaces
1,393 downloads per month
120KB
2.5K
SLoC
SQLx rxqlite
Install
You need to have access to an rxqlite node. Instructions for installing rxqlite are available at https://github.com/HaHa421/rxqlite
Usage
A simple Cargo dependency would look like this :
[dependencies]
sqlx-rxqlite = { version = "0.1" }
sqlx = { version = "0.7" , default-features = false, features = ["macros", "runtime-tokio", "tls-none"] }
tokio = { version = "1", features = [ "full" ] }
Assuming an rxqlite node listens at "127.0.0.1:21001", a simple app would proceed as follows:
use futures_util::StreamExt;
use sqlx::prelude::*;
use sqlx_rxqlite::RXQLitePoolOptions;
//#[async_std::main] // Requires the `attributes` feature of `async-std`
#[tokio::main]
// or #[actix_web::main]
async fn main() -> Result<(), sqlx::Error> {
let pool = RXQLitePoolOptions::new()
//.max_connections(5)
.connect("rxqlite://localhost:21001")
.await?;
sqlx::query(
"CREATE TABLE IF NOT EXISTS _sqlx_rxqlite_test_user_ (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL UNIQUE
)",
)
.execute(&pool)
.await?;
let mut row = sqlx::query("SELECT * FROM _sqlx_rxqlite_test_user_ WHERE name = ?")
.bind("JohnDoe")
.fetch_optional(&pool)
.await?;
if row.is_none() {
sqlx::query("INSERT INTO _sqlx_rxqlite_test_user_ (name) VALUES (?);")
.bind("JohnDoe")
.execute(&pool)
.await?;
row = sqlx::query("SELECT * FROM _sqlx_rxqlite_test_user_ WHERE name = 'JohnDoe'")
.fetch_optional(&pool)
.await?;
}
assert!(row.is_some());
sqlx::query(
"DROP TABLE _sqlx_rxqlite_test_user_",
)
.execute(&pool)
.await?;
Ok(())
}
Security
rxqlite supports tls insecure connections (accepting any certificate, including self-signed certificates).
License
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.
Contribution
Unless you explicitly state otherwise, any Contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be licensed as above, without any additional terms or conditions.
Dependencies
~20–34MB
~625K SLoC