Module builder

Module builder 

Source
Expand description

Type-Safe SQL Builder

This module provides SQL builders with compile-time type checking. Invalid SQL constructs are caught at compile time.

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§

typed
Type-safe query builder using schema traits.
value
SQL values and parameter handling.

Structs§

ColumnRef
A column reference for dynamic (string-based) queries.
DeleteDyn
A dynamic DELETE statement builder using string-based column names.
ExprBuilder
A type-safe expression builder.
InsertDyn
A dynamic INSERT statement builder using string-based column names.
SafeDeleteDyn
A safe DELETE builder that requires a WHERE clause.
SafeDeleteDynWithWhere
SelectDyn
A dynamic SELECT statement builder using string-based column names.
UpdateDyn
A dynamic UPDATE statement builder using string-based column names.

Functions§

dyn_col
Creates a column reference for dynamic (string-based) queries.