#database-client #grpc #grpc-client #protobuf #database-driver #sdk #grpc-api

ydb

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

49 releases

new 0.9.4 Oct 31, 2024
0.9.2 May 17, 2024
0.8.0 Mar 6, 2024
0.6.2 Aug 25, 2023
0.0.15 Mar 31, 2022

#2621 in Database interfaces

Download history 65/week @ 2024-07-04 38/week @ 2024-07-25 16/week @ 2024-08-01 67/week @ 2024-09-19 57/week @ 2024-09-26 110/week @ 2024-10-03 66/week @ 2024-10-10 5/week @ 2024-10-17

266 downloads per month
Used in ydb-steroids

Apache-2.0

1MB
19K SLoC

Rust YDB SDK Latest Version

Documentation

Rust SDK for YDB. Supported rust: 1.60.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–40MB
~729K SLoC