Skip to content

Commit 2fa8de7

Browse files
committed
More ergonomicity for params
1 parent 951b118 commit 2fa8de7

File tree

1 file changed

+19
-9
lines changed

1 file changed

+19
-9
lines changed

src/lib.rs

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,18 @@ impl<'a> From<&'a [String]> for QueryParams<'a> {
177177
}
178178
}
179179

180+
impl<'a, const N: usize> From<&'a [(String, String); N]> for QueryParams<'a> {
181+
fn from(value: &'a [(String, String); N]) -> Self {
182+
Self::Named(Cow::Borrowed(value))
183+
}
184+
}
185+
186+
impl<'a, const N: usize> From<&'a [String; N]> for QueryParams<'a> {
187+
fn from(value: &'a [String; N]) -> Self {
188+
Self::Indexed(Cow::Borrowed(value))
189+
}
190+
}
191+
180192
impl<'a> QueryParams<'a> {
181193
fn is_named(&self) -> bool {
182194
matches!(self, QueryParams::Named(_))
@@ -1566,7 +1578,7 @@ mod tests {
15661578
];
15671579
let options = FormatOptions::builder()
15681580
.dialect(Dialect::SQLServer)
1569-
.params(params.as_ref());
1581+
.params(&params);
15701582
let expected = indoc!(
15711583
"
15721584
SELECT
@@ -1622,9 +1634,7 @@ mod tests {
16221634
"'super weird value'".to_string(),
16231635
),
16241636
];
1625-
let options = FormatOptions::builder()
1626-
.dialect(Dialect::SQLServer)
1627-
.params(params);
1637+
let options = FormatOptions::builder().dialect(Dialect::SQLServer).build();
16281638
let expected = indoc!(
16291639
"
16301640
SELECT
@@ -1638,7 +1648,7 @@ mod tests {
16381648
'super weird value';"
16391649
);
16401650

1641-
assert_eq!(options.format(input), expected);
1651+
assert_eq!(options.with_params(params).format(input), expected);
16421652
}
16431653

16441654
#[test]
@@ -1664,7 +1674,7 @@ mod tests {
16641674
"second".to_string(),
16651675
"third".to_string(),
16661676
];
1667-
let options = FormatOptions::builder().params(params);
1677+
let options = FormatOptions::builder().params(&params);
16681678
let expected = indoc!(
16691679
"
16701680
SELECT
@@ -1734,7 +1744,7 @@ mod tests {
17341744
"third".to_string(),
17351745
"4th".to_string(),
17361746
];
1737-
let options = FormatOptions::builder().params(params);
1747+
let options = FormatOptions::builder().params(&params);
17381748
let expected = indoc!(
17391749
"
17401750
SELECT
@@ -1752,13 +1762,13 @@ mod tests {
17521762
#[test]
17531763
fn it_recognizes_dollar_sign_alphanumeric_placeholders_with_param_values() {
17541764
let input = "SELECT $hash, $salt, $1, $2;";
1755-
let params = vec![
1765+
let params = [
17561766
("hash".to_string(), "hash value".to_string()),
17571767
("salt".to_string(), "salt value".to_string()),
17581768
("1".to_string(), "number 1".to_string()),
17591769
("2".to_string(), "number 2".to_string()),
17601770
];
1761-
let options = FormatOptions::builder().params(params);
1771+
let options = FormatOptions::builder().params(&params);
17621772
let expected = indoc!(
17631773
"
17641774
SELECT

0 commit comments

Comments
 (0)