tsubakuro_rust_core/lib.rs
1//! [tsubakuro-rust-core](https://github.com/project-tsurugi/tsubakuro-rust/tree/master/tsubakuro-rust-core)
2//! is the core library to access [Tsurugi](https://github.com/project-tsurugi/tsurugidb) written in Rust.
3//!
4//! # Overview
5//! The procedure for executing SQL in tsubakuro-rust-core is generally as follows.
6//!
7//! 1. Create a [`Session`](crate::prelude::Session) (to connect to the Tsurugi DB server).
8//! 1. Create a [`ConnectionOption`](crate::prelude::ConnectionOption).
9//! 2. Set endpoint url (e.g. `tcp://localhost:12345`), etc to ConnectionOption.
10//! 3. Set [`Credential`](crate::prelude::Credential) to ConnectionOption.
11//! 4. Invoke [`Session::connect()`](crate::prelude::Session::connect).
12//! 2. Make a [`SqlClient`](crate::prelude::SqlClient) from Session.
13//! 1. Invoke [`Session::make_client()`](crate::prelude::Session::make_client).
14//! 3. When using prepared statement, create a [`SqlPreparedStatement`](crate::prelude::SqlPreparedStatement) from SqlClient.
15//! 1. Invoke [`SqlClient::prepare()`](crate::prelude::SqlClient::prepare).
16//! 4. Start a transaction (create a [`Transaction`](crate::prelude::Transaction) from SqlClient).
17//! 1. Create a [`TransactionOption`](crate::prelude::TransactionOption).
18//! 2. Set [`TransactionType`](crate::prelude::TransactionType), etc to TransactionOption.
19//! 3. Invoke [`SqlClient::start_transaction()`](crate::prelude::SqlClient::start_transaction).
20//! 5. Execute SQL using SqlClient, Transaction (and SqlPreparedStatement).
21//! - [`SqlClient::execute()`](crate::prelude::SqlClient::execute), [`prepared_execute()`](crate::prelude::SqlClient::prepared_execute)
22//! - [`SqlClient::query()`](crate::prelude::SqlClient::query), [`prepared_query()`](crate::prelude::SqlClient::prepared_query)
23//! 6. Commit transaction.
24//! 1. Create a [`CommitOption`](crate::prelude::CommitOption).
25//! 2. Set [`CommitType`](crate::prelude::CommitType), etc to CommitOption.
26//! 3. Invoke [`SqlClient::commit()`](crate::prelude::SqlClient::commit).
27//! 7. Close transaction.
28//! 1. Invoke [`Transaction::close()`](crate::prelude::Transaction::close).
29//! 8. Close prepared statement if created.
30//! 1. Invoke [`SqlPreparedStatement::close()`](crate::prelude::SqlPreparedStatement::close).
31//! 9. Close session.
32//! 1. Invoke [`Session::close()`](crate::prelude::Session::close).
33//!
34//! # Examples
35//!
36//! See <https://github.com/project-tsurugi/tsubakuro-rust/tree/master/tsubakuro-rust-core#example>.
37//!
38#![allow(clippy::result_large_err)]
39
40#[doc(hidden)]
41pub mod error;
42#[doc(hidden)]
43pub mod job;
44pub mod prelude;
45#[doc(hidden)]
46pub mod service;
47#[doc(hidden)]
48pub mod session;
49#[doc(hidden)]
50pub mod transaction;
51pub(crate) mod util;
52
53#[allow(clippy::enum_variant_names, clippy::module_inception)]
54pub(crate) mod jogasaki {
55 pub(crate) mod proto {
56 pub(crate) mod sql {
57 pub(crate) mod common {
58 include!(concat!(env!("OUT_DIR"), "/jogasaki.proto.sql.common.rs"));
59 }
60 pub(crate) mod error {
61 include!(concat!(env!("OUT_DIR"), "/jogasaki.proto.sql.error.rs"));
62 }
63 pub(crate) mod request {
64 include!(concat!(env!("OUT_DIR"), "/jogasaki.proto.sql.request.rs"));
65 }
66 pub(crate) mod response {
67 include!(concat!(env!("OUT_DIR"), "/jogasaki.proto.sql.response.rs"));
68 }
69 }
70 }
71}
72
73#[allow(clippy::module_inception)]
74pub(crate) mod tateyama {
75 pub(crate) mod proto {
76 pub(crate) mod core {
77 pub(crate) mod request {
78 include!(concat!(env!("OUT_DIR"), "/tateyama.proto.core.request.rs"));
79 }
80 pub(crate) mod response {
81 include!(concat!(env!("OUT_DIR"), "/tateyama.proto.core.response.rs"));
82 }
83 }
84 pub(crate) mod diagnostics {
85 include!(concat!(env!("OUT_DIR"), "/tateyama.proto.diagnostics.rs"));
86 }
87 pub(crate) mod endpoint {
88 pub(crate) mod request {
89 include!(concat!(
90 env!("OUT_DIR"),
91 "/tateyama.proto.endpoint.request.rs"
92 ));
93 }
94 pub(crate) mod response {
95 include!(concat!(
96 env!("OUT_DIR"),
97 "/tateyama.proto.endpoint.response.rs"
98 ));
99 }
100 }
101 pub(crate) mod framework {
102 pub(crate) mod common {
103 include!(concat!(
104 env!("OUT_DIR"),
105 "/tateyama.proto.framework.common.rs"
106 ));
107 }
108 pub(crate) mod request {
109 include!(concat!(
110 env!("OUT_DIR"),
111 "/tateyama.proto.framework.request.rs"
112 ));
113 }
114 pub(crate) mod response {
115 include!(concat!(
116 env!("OUT_DIR"),
117 "/tateyama.proto.framework.response.rs"
118 ));
119 }
120 }
121 }
122}