libsql 0.5.0

libSQL library: the main gateway for interacting with the database
Documentation
use libsql::Builder;

#[tokio::main]
async fn main() {
    tracing_subscriber::fmt::init();

    let db_file = tempfile::NamedTempFile::new().unwrap();
    println!("Database {}", db_file.path().display());

    let auth_token = std::env::var("TURSO_AUTH_TOKEN").unwrap_or_else(|_| {
        println!("Using empty token since TURSO_AUTH_TOKEN was not set");
        "".to_string()
    });

    let db = Builder::new_remote_replica(
        db_file.path(),
        "http://localhost:8080".to_string(),
        auth_token,
    )
    .build()
    .await
    .unwrap();

    db.sync().await.unwrap();

    let conn = db.connect().unwrap();

    conn.execute("BEGIN READONLY", ()).await.unwrap();
    conn.query("SELECT 1", ()).await.unwrap();
    conn.query("COMMIT", ()).await.unwrap();

    let tx = conn
        .transaction_with_behavior(libsql::TransactionBehavior::Immediate)
        .await
        .unwrap();

    tx.execute("INSERT INTO foo (x) VALUES (?1)", ["hello world"])
        .await
        .unwrap();

    tx.commit().await.unwrap();
}