drizzle-sqlite 0.1.5

A type-safe SQL query builder for Rust
Documentation
//! SQLite implementation for Drizzle
//!
//! This crate provides SQLite-specific types, query builders, and utilities.

pub mod attrs;
pub mod builder;
pub mod common;
pub mod connection;
pub mod expressions;
pub mod helpers;
pub mod pragma;
pub mod traits;
pub mod values;

pub use drizzle_core::ParamBind;

/// Creates an array of SQL parameters for binding values to placeholders.
///
/// # Syntax
/// - `{ name: value }` - Named parameter (creates :name placeholder)
/// - `value` - Positional parameter (creates next positional placeholder)
///
/// # Examples
///
/// ```
/// use drizzle_sqlite::params;
///
/// let params = params![{ name: "alice" }, true];
/// ```
#[macro_export]
macro_rules! params {
    // Multiple parameters - creates a fixed-size array of ParamBind values
    [$($param:tt),+ $(,)?] => {
        [
            $(
                $crate::params_internal!($param)
            ),+
        ]
    };
}

/// Internal helper macro for params! - converts individual items to ParamBind values
#[macro_export]
macro_rules! params_internal {
    // Named parameter
    ({ $key:ident: $value:expr }) => {
        $crate::ParamBind::new(stringify!($key), $crate::values::SQLiteValue::from($value))
    };
    // Positional parameter
    ($value:expr) => {
        $crate::ParamBind::positional($crate::values::SQLiteValue::from($value))
    };
}