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