#sqlx #rqlite #driver #sql #details #intended #rxqlite

sqlx-rxqlite

rqlite driver implementation for SQLx. intended for use with sqlx; see the sqlx crate for details.

1 unstable release

new 0.1.18 Apr 26, 2024
0.1.17 Apr 9, 2024
0.1.9 Mar 27, 2024

#1151 in Database interfaces

Download history 118/week @ 2024-03-15 433/week @ 2024-03-22 562/week @ 2024-03-29 367/week @ 2024-04-05 21/week @ 2024-04-12

1,393 downloads per month

MIT/Apache

120KB
2.5K SLoC

SQLx rxqlite

The Rust SQL Toolkit rxqlite driver

Sqlx driver for 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

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