Skip to main content

sql_orm_tiberius/
lib.rs

1//! Tiberius adapter boundary for execution concerns.
2
3mod 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/// Placeholder execution adapter marker.
17#[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}