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}