drizzle_core/dialect.rs
1//! Dialect type re-exported from drizzle-types with core-specific extensions.
2
3use crate::prelude::*;
4
5/// Re-export the unified Dialect enum from drizzle-types
6pub use drizzle_types::Dialect;
7
8/// Extension trait for Dialect-specific placeholder rendering
9pub trait DialectExt {
10 /// Renders a placeholder for this dialect with the given 1-based index.
11 ///
12 /// Returns `Cow::Borrowed("?")` for SQLite/MySQL (zero allocation),
13 /// `Cow::Owned` for PostgreSQL numbered placeholders.
14 ///
15 /// # Examples
16 /// - PostgreSQL: `$1`, `$2`, `$3`
17 /// - SQLite/MySQL: `?`
18 fn render_placeholder(&self, index: usize) -> Cow<'static, str>;
19}
20
21impl DialectExt for Dialect {
22 #[inline]
23 fn render_placeholder(&self, index: usize) -> Cow<'static, str> {
24 match self {
25 Dialect::PostgreSQL => Cow::Owned(format!("${}", index)),
26 Dialect::SQLite | Dialect::MySQL => Cow::Borrowed("?"),
27 }
28 }
29}