sqlx-rxqlite

Crates.iosqlx-rxqlite
lib.rssqlx-rxqlite
version0.1.18
sourcesrc
created_at2024-03-19 15:05:04.791152
updated_at2024-04-26 09:28:14.555252
descriptionrqlite driver implementation for SQLx. intended for use with sqlx; see the `sqlx` crate for details.
homepagehttps://github.com/HaHa421/sqlx-rxqlite
repository
max_upload_size
id1179340
size214,189
(HaHa421)

documentation

README

SQLx rxqlite

The Rust SQL Toolkit rxqlite driver

Install | Usage | Security | License

Sqlx driver for rxqlite

Crates.io version

CI

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.

Commit count: 0

cargo fmt