Expand description
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:
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:
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 = ?");Re-exports§
pub use typed::Delete;pub use typed::Insert;pub use typed::Select;pub use typed::Update;pub use typed::col;pub use value::SqlValue;pub use value::ToSqlValue;
Modules§
Structs§
- Column
Ref - A column reference for dynamic (string-based) queries.
- Delete
Dyn - A dynamic DELETE statement builder using string-based column names.
- Expr
Builder - A type-safe expression builder.
- Insert
Dyn - A dynamic INSERT statement builder using string-based column names.
- Safe
Delete Dyn - A safe DELETE builder that requires a WHERE clause.
- Safe
Delete DynWith Where - Select
Dyn - A dynamic SELECT statement builder using string-based column names.
- Update
Dyn - A dynamic UPDATE statement builder using string-based column names.
Functions§
- dyn_col
- Creates a column reference for dynamic (string-based) queries.