Expand description
Type-safe query builder using schema traits.
This module provides query builders that use compile-time type checking to ensure that column names are valid for the table being queried.
§Example
With #[derive(Table)] from oxide-sql-derive, you can use type-safe
queries with compile-time column validation:
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, email: String }
struct UserTable;
impl Table for UserTable {
type Row = User;
const NAME: &'static str = "users";
const COLUMNS: &'static [&'static str] = &["id", "name", "email"];
const PRIMARY_KEY: Option<&'static str> = Some("id");
}
// Select all columns with compile-time validation
let (sql, params) = Select::<UserTable, _, _>::new()
.select_all()
.from_table()
.build();
assert_eq!(sql, "SELECT id, name, email FROM users");Structs§
- Delete
- A type-safe DELETE query builder that validates column names at compile time.
- HasColumns
- Marker: Columns have been selected.
- HasFrom
- Marker: Table has been specified.
- HasSet
- Marker: SET clause has been specified.
- HasValues
- Marker: Values have been specified.
- Insert
- A type-safe INSERT query builder that validates column names at compile time.
- NoColumns
- Marker: No columns selected yet.
- NoFrom
- Marker: No table specified yet.
- NoSet
- Marker: No SET clause specified yet.
- NoValues
- Marker: No values specified yet.
- Select
- A type-safe SELECT query builder that validates column names at compile time.
- Update
- A type-safe UPDATE query builder that validates column names at compile time.
Functions§
- col
- Creates a type-safe column expression for use in WHERE clauses.