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}