1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
#[derive(Clone, Debug)] pub struct Query { sql: String, id: String } impl Query { pub fn new(sql: impl AsRef<str>) -> Self { Self { sql: sql.as_ref().to_string(), id: "".to_string() } } pub fn id(self, id: impl AsRef<str>) -> Self { Self { id: id.as_ref().to_string(), ..self } } pub(crate) fn get_sql(&self) -> &str { &self.sql } pub(crate) fn get_id(&self) -> &str { &self.id } pub(crate) fn map_sql<F>(self, f: F) -> Self where F: Fn(&str) -> String { Self { sql: f(&self.sql), ..self } } } impl<T> From<T> for Query where T: AsRef<str> { fn from(source: T) -> Self { Self::new(source) } }