Module ydb_unofficial::sqlx

source ·
Available on crate feature sqlx only.
Expand description

SQLX traits implementation for Ydb

§Examples

    use ydb_unofficial::sqlx::prelude::*;
    let token = std::env::var("DB_TOKEN").unwrap();
    let db_url = std::env::var("YDB_URL").unwrap();
    let db_name = std::env::var("DB_NAME").unwrap();
    let conn_str = format!("{db_url}{db_name}?token={token}");
    let options = YdbConnectOptions::from_str(&conn_str)?;
    let mut conn = options.connect().await?;
    query("create table my_test_table (id int32, text utf8, obj Json, objdoc JsonDocument, primary key(id));")
        .execute(conn.scheme_executor()?).await?;
    let result = query("declare $id as int32; declare $text as utf8; declare $obj as Json; declare $objdoc as JsonDocument; upsert into my_test_table(id, text, obj, objdoc) values($id, $text, $obj, $objdoc);")
        .bind(("$id",1))
        .bind(("$text", "one".to_owned()))
        .bind(("$obj", Json::from("{\"x\":\"y\"}".to_owned())))
        .bind(("$objdoc", JsonDocument::from("{\"foo\":\"bar\"}".to_owned())))
        .execute(conn.executor()?).await?;
    let row: (i32, String, Json, JsonDocument, String) = query_as("select id, text, obj, objdoc, json_value(objdoc, '$.foo') from my_test_table;")
        .fetch_one(conn.executor()?).await?;
    assert_eq!(row.0, 1);
    assert_eq!(row.1, "one");
    println!("row: {}", row.2.text());
    println!("row: {}", row.3.text());
    assert_eq!(row.4, "bar");
    query("drop table my_test_table;")
        .execute(conn.scheme_executor()?).await?;

Modules§