|
@@ -60,6 +60,28 @@ pub(crate) enum QueryPart {
|
|
|
Trailing,
|
|
|
}
|
|
|
|
|
|
+// helper trait to replace itertools dependency
|
|
|
+trait Joinable {
|
|
|
+ fn join(self, sep: &str) -> String;
|
|
|
+}
|
|
|
+
|
|
|
+impl<T: std::fmt::Display, I: Iterator<Item = T>> Joinable for I {
|
|
|
+ fn join(self, sep: &str) -> String {
|
|
|
+ use std::fmt::Write;
|
|
|
+ let mut out = String::new();
|
|
|
+ let mut first = true;
|
|
|
+ for item in self {
|
|
|
+ if first {
|
|
|
+ first = false
|
|
|
+ } else {
|
|
|
+ out.push_str(sep);
|
|
|
+ }
|
|
|
+ write!(&mut out, "{}", item).unwrap();
|
|
|
+ }
|
|
|
+ out
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
/// Represents a SQL query built during runtime.
|
|
|
#[derive(Debug)]
|
|
|
pub struct Query<'l> {
|