prax_sqlx/
lib.rs

1//! # Prax SQLx Backend
2//!
3//! This crate provides a SQLx-based query engine for Prax ORM, offering
4//! compile-time checked queries as an alternative to the default async drivers.
5//!
6//! ## Features
7//!
8//! - **Compile-time query checking** - Validate SQL queries at compile time
9//! - **Multi-database support** - PostgreSQL, MySQL, and SQLite through a unified API
10//! - **Type-safe queries** - Strong typing for query parameters and results
11//! - **Connection pooling** - Built-in connection pool management via SQLx
12//! - **Async/await** - Full async support with tokio runtime
13//!
14//! ## Usage
15//!
16//! ```rust,ignore
17//! use prax_sqlx::{SqlxEngine, SqlxConfig};
18//!
19//! // Create configuration
20//! let config = SqlxConfig::from_url("postgres://user:pass@localhost/db")?;
21//!
22//! // Create engine
23//! let engine = SqlxEngine::new(config).await?;
24//!
25//! // Execute queries
26//! let users: Vec<User> = engine
27//!     .query_many("SELECT * FROM users WHERE active = $1", &[&true])
28//!     .await?;
29//! ```
30//!
31//! ## Compile-Time Checking
32//!
33//! Use the `sqlx::query!` macro for compile-time SQL verification:
34//!
35//! ```rust,ignore
36//! use prax_sqlx::checked;
37//!
38//! // This query is checked at compile time
39//! let users = checked::query_as!(
40//!     User,
41//!     "SELECT id, name, email FROM users WHERE id = $1",
42//!     user_id
43//! )
44//! .fetch_all(&pool)
45//! .await?;
46//! ```
47
48#![deny(unsafe_code)]
49#![warn(missing_docs)]
50
51pub mod config;
52pub mod connection;
53pub mod engine;
54pub mod error;
55pub mod pool;
56pub mod row;
57pub mod types;
58
59#[cfg(feature = "postgres")]
60pub mod postgres;
61
62#[cfg(feature = "mysql")]
63pub mod mysql;
64
65#[cfg(feature = "sqlite")]
66pub mod sqlite;
67
68/// Re-export commonly used types
69pub use config::SqlxConfig;
70pub use engine::SqlxEngine;
71pub use error::{SqlxError, SqlxResult};
72pub use pool::{SqlxPool, SqlxPoolBuilder};
73
74/// Re-export SQLx types for convenience
75pub use sqlx::{self, FromRow, Row};
76
77/// Checked query macros for compile-time SQL verification
78pub mod checked {
79    pub use sqlx::{query, query_as, query_scalar};
80}