Skip to main content

drizzle_sqlite/
lib.rs

1//! SQLite implementation for Drizzle
2//!
3//! This crate provides SQLite-specific types, query builders, and utilities.
4
5pub mod attrs;
6pub mod builder;
7pub mod common;
8pub mod connection;
9pub mod expressions;
10pub mod helpers;
11pub mod pragma;
12pub mod traits;
13pub mod values;
14
15pub use drizzle_core::ParamBind;
16
17/// Creates an array of SQL parameters for binding values to placeholders.
18///
19/// # Syntax
20/// - `{ name: value }` - Named parameter (creates :name placeholder)
21/// - `value` - Positional parameter (creates next positional placeholder)
22///
23/// # Examples
24///
25/// ```
26/// use drizzle_sqlite::params;
27///
28/// let params = params![{ name: "alice" }, true];
29/// ```
30#[macro_export]
31macro_rules! params {
32    // Multiple parameters - creates a fixed-size array of ParamBind values
33    [$($param:tt),+ $(,)?] => {
34        [
35            $(
36                $crate::params_internal!($param)
37            ),+
38        ]
39    };
40}
41
42/// Internal helper macro for params! - converts individual items to ParamBind values
43#[macro_export]
44macro_rules! params_internal {
45    // Named parameter
46    ({ $key:ident: $value:expr }) => {
47        $crate::ParamBind::new(stringify!($key), $crate::values::SQLiteValue::from($value))
48    };
49    // Positional parameter
50    ($value:expr) => {
51        $crate::ParamBind::positional($crate::values::SQLiteValue::from($value))
52    };
53}