1mod config;
4mod connection;
5mod error;
6mod executor;
7mod parameter;
8#[cfg(feature = "pool-bb8")]
9mod pool;
10mod row;
11mod telemetry;
12mod transaction;
13
14use sql_orm_core::CrateIdentity;
15
16#[derive(Debug, Clone, Copy, PartialEq, Eq)]
18pub struct TiberiusAdapter;
19
20pub use config::{
21 MssqlConnectionConfig, MssqlHealthCheckOptions, MssqlHealthCheckQuery, MssqlOperationalOptions,
22 MssqlParameterLogMode, MssqlPoolBackend, MssqlPoolOptions, MssqlRetryOptions,
23 MssqlSlowQueryOptions, MssqlTimeoutOptions, MssqlTracingOptions,
24};
25pub use connection::{MssqlConnection, TokioConnectionStream};
26pub use executor::{ExecuteResult, Executor};
27#[cfg(feature = "pool-bb8")]
28pub use pool::{MssqlPool, MssqlPoolBuilder, MssqlPooledConnection};
29pub use row::MssqlRow;
30pub use transaction::MssqlTransaction;
31
32pub const CRATE_IDENTITY: CrateIdentity = CrateIdentity {
33 name: "sql-orm-tiberius",
34 responsibility: "connections, execution, rows and transactions over Tiberius",
35};
36
37#[cfg(test)]
38mod tests {
39 use super::{
40 CRATE_IDENTITY, ExecuteResult, MssqlConnectionConfig, MssqlHealthCheckOptions,
41 MssqlHealthCheckQuery, MssqlOperationalOptions, MssqlPoolOptions, MssqlRetryOptions,
42 MssqlRow, MssqlSlowQueryOptions, MssqlTimeoutOptions, MssqlTracingOptions,
43 MssqlTransaction, TiberiusAdapter, TokioConnectionStream,
44 };
45 use std::time::Duration;
46
47 #[test]
48 fn declares_execution_boundary() {
49 let adapter = TiberiusAdapter;
50 assert_eq!(adapter, TiberiusAdapter);
51 assert!(CRATE_IDENTITY.responsibility.contains("transactions"));
52 }
53
54 #[test]
55 fn reexports_connection_config() {
56 let config = MssqlConnectionConfig::from_connection_string(
57 "server=tcp:localhost,1433;database=master;user=sa;password=Password123;TrustServerCertificate=true",
58 )
59 .unwrap();
60
61 assert_eq!(config.addr(), "localhost:1433");
62 }
63
64 #[test]
65 fn reexports_operational_options_surface() {
66 let options = MssqlOperationalOptions::new()
67 .with_timeouts(MssqlTimeoutOptions::new().with_connect_timeout(Duration::from_secs(5)))
68 .with_retry(MssqlRetryOptions::enabled(
69 2,
70 Duration::from_millis(50),
71 Duration::from_secs(1),
72 ))
73 .with_tracing(MssqlTracingOptions::enabled())
74 .with_slow_query(MssqlSlowQueryOptions::enabled(Duration::from_millis(250)))
75 .with_health(MssqlHealthCheckOptions::enabled(
76 MssqlHealthCheckQuery::SelectOne,
77 ))
78 .with_pool(MssqlPoolOptions::bb8(8));
79
80 assert_eq!(options.pool.max_size, 8);
81 assert!(options.tracing.enabled);
82 assert!(options.slow_query.enabled);
83 assert!(options.health.enabled);
84 }
85
86 #[test]
87 fn reexports_execute_result() {
88 let result = ExecuteResult::new(vec![1, 2]);
89
90 assert_eq!(result.total(), 3);
91 }
92
93 #[test]
94 fn reexports_mssql_row_wrapper() {
95 let wrapper = core::mem::size_of::<MssqlRow<'static>>();
96
97 assert!(wrapper > 0);
98 }
99
100 #[test]
101 fn reexports_transaction_wrapper() {
102 let wrapper =
103 core::mem::size_of::<Option<MssqlTransaction<'static, TokioConnectionStream>>>();
104
105 assert!(wrapper > 0);
106 }
107
108 #[cfg(feature = "pool-bb8")]
109 #[test]
110 fn reexports_pool_surface() {
111 let builder = super::MssqlPool::builder();
112
113 assert_eq!(builder.options().backend, super::MssqlPoolBackend::Bb8);
114 }
115}