Skip to main content

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