diesel/sqlite/query_builder/
mod.rs

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