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;