Skip to main content

chain_builder/
lib.rs

1//! Chain Builder - A flexible and easy-to-use query builder for MySQL in Rust
2//!
3//! This library provides a fluent interface for building SQL queries with support for:
4//! - SELECT, INSERT, UPDATE, DELETE operations
5//! - Complex WHERE clauses with subqueries
6//! - JOIN operations
7//! - WITH clauses (CTEs)
8//! - UNION operations
9//! - Raw SQL support
10//!
11//! # Example
12//! ```rust
13//! use chain_builder::{ChainBuilder, Client, Select, WhereClauses};
14//! use serde_json::Value;
15//!
16//! let mut builder = ChainBuilder::new(Client::Mysql);
17//! builder
18//!     .db("mydb")
19//!     .select(Select::Columns(vec!["*".into()]))
20//!     .table("users")
21//!     .query(|qb| {
22//!         qb.where_eq("name", Value::String("John".to_string()));
23//!         qb.where_eq("status", Value::String("active".to_string()));
24//!     });
25//!
26//! let (sql, binds) = builder.to_sql();
27//! ```
28
29// Core modules
30mod builder;
31mod common;
32mod dialect;
33mod query;
34mod types;
35
36// Database-specific modules
37#[cfg(feature = "mysql")]
38mod mysql;
39#[cfg(feature = "sqlite")]
40mod sqlite;
41#[cfg(all(feature = "mysql", feature = "sqlx_mysql"))]
42mod sqlx_mysql;
43#[cfg(all(feature = "sqlite", feature = "sqlx_sqlite"))]
44mod sqlx_sqlite;
45
46// Re-export main types
47pub use builder::ChainBuilder;
48pub use query::{Operator, QueryBuilder};
49pub use types::{Client, Common, Method, Select, Statement};
50
51// Re-export database-specific types
52#[cfg(feature = "mysql")]
53pub use mysql::ToSql;
54
55// Re-export join functionality
56pub use query::join::{JoinBuilder, JoinMethods};
57
58// Re-export query builder functionality
59pub use query::common::{HavingClauses, QueryCommon, WhereClauses};