sqlx-rxqlite 0.1.6

rqlite driver implementation for SQLx. intended for use with sqlx; see the `sqlx` crate for details.
sqlx-rxqlite-0.1.6 has been yanked.
Visit the last successful build: sqlx-rxqlite-0.1.18

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 doens't support tls connections yet.

License

Licensed under

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.