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 query;
33mod types;
34
35// Database-specific modules
36#[cfg(feature = "mysql")]
37mod mysql;
38#[cfg(feature = "sqlite")]
39mod sqlite;
40#[cfg(all(feature = "mysql", feature = "sqlx_mysql"))]
41mod sqlx_mysql;
42#[cfg(all(feature = "sqlite", feature = "sqlx_sqlite"))]
43mod sqlx_sqlite;
44
45// Re-export main types
46pub use builder::ChainBuilder;
47pub use query::{Operator, QueryBuilder};
48pub use types::{Client, Common, Method, Select, Statement};
49
50// Re-export database-specific types
51#[cfg(feature = "mysql")]
52pub use mysql::ToSql;
53
54// Re-export join functionality
55pub use query::join::{JoinBuilder, JoinMethods};
56
57// Re-export query builder functionality
58pub use query::common::{HavingClauses, QueryCommon, WhereClauses};