ydb_unofficial/sqlx/
mod.rs

1//! SQLX traits implementation for Ydb
2//! 
3//! # Examples
4//! 
5//! ``` rust
6//! # #[tokio::main]
7//! # async fn main() -> Result<(), Box<dyn std::error::Error>> {
8//!     use ydb_unofficial::sqlx::prelude::*;
9//!     let token = std::env::var("DB_TOKEN").unwrap();
10//!     let db_url = std::env::var("YDB_URL").unwrap();
11//!     let db_name = std::env::var("DB_NAME").unwrap();
12//!     let conn_str = format!("{db_url}{db_name}?token={token}");
13//!     let options = YdbConnectOptions::from_str(&conn_str)?;
14//!     let mut conn = options.connect().await?;
15//!     query("create table my_test_table (id int32, text utf8, obj Json, objdoc JsonDocument, primary key(id));")
16//!         .execute(conn.scheme_executor()?).await?;
17//!     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);")
18//!         .bind(("$id",1))
19//!         .bind(("$text", "one".to_owned()))
20//!         .bind(("$obj", Json::from("{\"x\":\"y\"}".to_owned())))
21//!         .bind(("$objdoc", JsonDocument::from("{\"foo\":\"bar\"}".to_owned())))
22//!         .execute(conn.executor()?).await?;
23//!     let row: (i32, String, Json, JsonDocument, String) = query_as("select id, text, obj, objdoc, json_value(objdoc, '$.foo') from my_test_table;")
24//!         .fetch_one(conn.executor()?).await?;
25//!     assert_eq!(row.0, 1);
26//!     assert_eq!(row.1, "one");
27//!     println!("row: {}", row.2.text());
28//!     println!("row: {}", row.3.text());
29//!     assert_eq!(row.4, "bar");
30//!     query("drop table my_test_table;")
31//!         .execute(conn.scheme_executor()?).await?;
32//! #   Ok(())
33//! # }
34//! ```
35
36pub mod entities;
37pub mod database;
38pub mod error;
39
40pub mod connection;
41pub mod executor;
42pub mod types;
43pub mod statement;
44//TODO: спрятать под фичу
45mod minikql;
46
47use super::error::YdbError;
48
49pub mod prelude;
50
51#[cfg(feature = "migrate")]
52#[cfg_attr(docsrs, doc(cfg(feature = "migrate")))]
53mod migration;