Skip to main content

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}