Skip to main content

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 row_ref;
58pub mod types;
59
60#[cfg(feature = "postgres")]
61pub mod postgres;
62
63#[cfg(feature = "mysql")]
64pub mod mysql;
65
66#[cfg(feature = "sqlite")]
67pub mod sqlite;
68
69/// Re-export commonly used types
70pub use config::SqlxConfig;
71pub use engine::SqlxEngine;
72pub use error::{SqlxError, SqlxResult};
73pub use pool::{SqlxPool, SqlxPoolBuilder};
74
75/// Re-export SQLx types for convenience
76pub use sqlx::{self, FromRow, Row};
77
78/// Checked query macros for compile-time SQL verification
79pub mod checked {
80    pub use sqlx::{query, query_as, query_scalar};
81}