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