#grpc #sdk #protobuf #database-driver #low-level #generated #client

ydb

Crate contains generated low-level grpc code from YDB API protobuf, used as base for ydb crate

40 releases

0.8.0 Mar 6, 2024
0.6.2 Aug 25, 2023
0.6.1 Jun 22, 2023
0.6.0 Mar 14, 2023
0.0.15 Mar 31, 2022

#46 in #database-driver

Download history 15/week @ 2023-12-26 7/week @ 2024-01-23 1/week @ 2024-02-13 8/week @ 2024-02-20 5/week @ 2024-02-27 153/week @ 2024-03-05 20/week @ 2024-03-12

187 downloads per month
Used in ydb-steroids

Apache-2.0

760KB
17K SLoC

Rust YDB SDK Latest Version

Documentation

Rust SDK for YDB. Supported rust: 1.56.0 and newer.

Integration tests, with dependency from real YDB database mark as ignored. For run it:

  1. Set YDB_CONNECTION_STRING env
  2. run cargo test -- --ignored

Cargo feature force-exhaustive-all

disable all non_exhaustive marks in public interface for force check new variants at compile time instead of runtime.


lib.rs:

YDB SDK - a client for YDB.

Example

#

 // create driver
 let client = ClientBuilder::new_from_connection_string("grpc://localhost:2136?database=local")?
    .with_credentials(StaticToken::from("asd"))
    .client()?;

 // wait until driver background initialization finish
 client.wait().await?;

 // read query result
 let sum: i32 = client
    .table_client() // create table client
    .retry_transaction(|mut t| async move {
        // code in transaction can retry few times if was some retriable error

        // send query to database
        let res = t.query(Query::from("SELECT 1 + 1 AS sum")).await?;

        // read exact one result from db
        let field_val: i32 = res.into_only_row()?.remove_field_by_name("sum")?.try_into()?;

        // return result
        return Ok(field_val);
    })
    .await?;

 // it will print "sum: 2"
 println!("sum: {}", sum);

More examples

Url shorneter application

Many small examples

Dependencies

~25–41MB
~739K SLoC