toasty_sql/serializer/params.rs
1use super::{Formatter, ToSql};
2
3/// A positional bind-parameter placeholder.
4///
5/// The inner `usize` is the 1-based parameter index. The serializer renders
6/// it in the target dialect's format (`$1`, `?1`, or `?`).
7///
8/// # Example
9///
10/// ```
11/// use toasty_sql::serializer::Placeholder;
12///
13/// let p = Placeholder(3);
14/// assert_eq!(p.0, 3);
15/// ```
16pub struct Placeholder(pub usize);
17
18impl ToSql for Placeholder {
19 fn to_sql(self, f: &mut Formatter<'_>) {
20 use std::fmt::Write;
21
22 match f.serializer.flavor {
23 super::Flavor::Mysql => write!(&mut f.dst, "?").unwrap(),
24 super::Flavor::Postgresql => write!(&mut f.dst, "${}", self.0).unwrap(),
25 super::Flavor::Sqlite => write!(&mut f.dst, "?{}", self.0).unwrap(),
26 }
27 }
28}