oxide-sql-core 0.2.0

Type-safe SQL parser and builder with compile-time validation
Documentation
//! Type-Safe SQL Builder
//!
//! This module provides SQL builders with compile-time type checking.
//! Invalid SQL constructs are caught at compile time.
//!
//! # Type-Safe Queries (Recommended)
//!
//! Use `Select`, `Insert`, `Update`, `Delete` with schema traits for
//! compile-time validation of column names:
//!
//! ```rust
//! use oxide_sql_core::builder::Select;
//! use oxide_sql_core::schema::Table;
//!
//! // Schema types (normally generated by #[derive(Table)])
//! struct User { id: i32, name: String, active: bool }
//! struct UserTable;
//!
//! impl Table for UserTable {
//!     type Row = User;
//!     const NAME: &'static str = "users";
//!     const COLUMNS: &'static [&'static str] = &["id", "name", "active"];
//!     const PRIMARY_KEY: Option<&'static str> = Some("id");
//! }
//!
//! // Compile-time validated SELECT
//! let (sql, params) = Select::<UserTable, _, _>::new()
//!     .select_all()
//!     .from_table()
//!     .build();
//!
//! assert_eq!(sql, "SELECT id, name, active FROM users");
//! ```
//!
//! # Dynamic Queries
//!
//! For string-based queries without compile-time validation, use `SelectDyn`,
//! `InsertDyn`, `UpdateDyn`, `DeleteDyn`:
//!
//! ```rust
//! use oxide_sql_core::builder::{SelectDyn, dyn_col};
//!
//! let (sql, params) = SelectDyn::new()
//!     .columns(&["id", "name"])
//!     .from("users")
//!     .where_clause(dyn_col("active").eq(true))
//!     .build();
//!
//! assert_eq!(sql, "SELECT id, name FROM users WHERE active = ?");
//! ```

mod delete;
mod expr;
mod insert;
mod select;
pub mod typed;
mod update;
pub mod value;

// Dynamic (string-based) builders
pub use delete::{DeleteDyn, SafeDeleteDyn, SafeDeleteDynWithWhere};
pub use expr::{ColumnRef, ExprBuilder, dyn_col};
pub use insert::InsertDyn;
pub use select::SelectDyn;
pub use update::UpdateDyn;

// Type-safe builders (recommended - these are the default names)
pub use typed::{Delete, Insert, Select, Update, col};

// Common types
pub use value::{SqlValue, ToSqlValue};