prax_mssql/lib.rs
1//! # prax-mssql
2//!
3//! Microsoft SQL Server driver for the Prax ORM with connection pooling
4//! and Row-Level Security (RLS) support.
5//!
6//! This crate provides:
7//! - Connection pool management using `bb8` and `tiberius`
8//! - Prepared statement support
9//! - Type-safe parameter binding
10//! - Row deserialization into Prax models
11//! - Row-Level Security (RLS) policy generation
12//!
13//! ## Example
14//!
15//! ```rust,ignore
16//! use prax_mssql::MssqlPool;
17//!
18//! #[tokio::main]
19//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
20//! // Create a connection pool
21//! let pool = MssqlPool::builder()
22//! .host("localhost")
23//! .database("mydb")
24//! .username("sa")
25//! .password("YourPassword123!")
26//! .max_connections(10)
27//! .build()
28//! .await?;
29//!
30//! // Get a connection
31//! let conn = pool.get().await?;
32//!
33//! Ok(())
34//! }
35//! ```
36//!
37//! ## Row-Level Security
38//!
39//! Generate SQL Server security policies from Prax schema policies:
40//!
41//! ```rust,ignore
42//! use prax_mssql::rls::SecurityPolicyGenerator;
43//! use prax_schema::Policy;
44//!
45//! let generator = SecurityPolicyGenerator::new("Security");
46//! let statements = generator.generate(&policy, "dbo.Users", "UserId");
47//!
48//! // Execute the generated SQL
49//! conn.batch_execute(&statements.to_sql()).await?;
50//! ```
51
52pub mod config;
53pub mod connection;
54pub mod engine;
55pub mod error;
56pub mod pool;
57pub mod rls;
58pub mod row;
59pub mod types;
60
61pub use config::{MssqlConfig, MssqlConfigBuilder};
62pub use connection::MssqlConnection;
63pub use engine::MssqlEngine;
64pub use error::{MssqlError, MssqlResult};
65pub use pool::{MssqlPool, MssqlPoolBuilder, PoolConfig, PoolStatus};
66pub use rls::{BlockOperation, SecurityPolicy, SecurityPolicyGenerator};
67pub use row::MssqlRow;
68pub use tiberius::Row;
69
70/// Prelude for convenient imports.
71pub mod prelude {
72 pub use crate::config::{MssqlConfig, MssqlConfigBuilder};
73 pub use crate::connection::MssqlConnection;
74 pub use crate::engine::MssqlEngine;
75 pub use crate::error::{MssqlError, MssqlResult};
76 pub use crate::pool::{MssqlPool, MssqlPoolBuilder};
77 pub use crate::rls::{BlockOperation, SecurityPolicy, SecurityPolicyGenerator};
78 pub use crate::row::MssqlRow;
79}