1 //! The SQLite query builder 2 3 use super::backend::Sqlite; 4 use query_builder::QueryBuilder; 5 use result::QueryResult; 6 7 /// Constructs SQL queries for use with the SQLite backend 8 #[allow(missing_debug_implementations)] 9 #[derive(Default)] 10 pub struct SqliteQueryBuilder { 11 sql: String, 12 } 13 14 impl SqliteQueryBuilder { 15 /// Construct a new query builder with an empty query new() -> Self16 pub fn new() -> Self { 17 SqliteQueryBuilder::default() 18 } 19 } 20 21 impl QueryBuilder<Sqlite> for SqliteQueryBuilder { push_sql(&mut self, sql: &str)22 fn push_sql(&mut self, sql: &str) { 23 self.sql.push_str(sql); 24 } 25 push_identifier(&mut self, identifier: &str) -> QueryResult<()>26 fn push_identifier(&mut self, identifier: &str) -> QueryResult<()> { 27 self.push_sql("`"); 28 self.push_sql(&identifier.replace("`", "``")); 29 self.push_sql("`"); 30 Ok(()) 31 } 32 push_bind_param(&mut self)33 fn push_bind_param(&mut self) { 34 self.push_sql("?"); 35 } 36 finish(self) -> String37 fn finish(self) -> String { 38 self.sql 39 } 40 } 41