Skip to main content

diesel/mysql_like/query_builder/
mod.rs

1use core::marker::PhantomData;
2
3use crate::backend::Backend;
4use crate::query_builder::QueryBuilder;
5use crate::result::QueryResult;
6
7#[doc(inline)]
8pub use self::query_fragment_impls::DuplicatedKeys;
9
10mod batch_update;
11mod limit_offset;
12mod query_fragment_impls;
13
14/// The MySQL-Like query builder
15#[allow(missing_debug_implementations)]
16pub struct MysqlLikeQueryBuilder<DB: Backend> {
17    sql: String,
18    _phantom: PhantomData<DB>,
19}
20
21impl<DB: Backend> Default for MysqlLikeQueryBuilder<DB> {
22    fn default() -> Self {
23        Self {
24            sql: String::default(),
25            _phantom: PhantomData,
26        }
27    }
28}
29
30impl<DB: Backend> MysqlLikeQueryBuilder<DB> {
31    /// Constructs a new query builder with an empty query
32    pub fn new() -> Self {
33        MysqlLikeQueryBuilder::default()
34    }
35}
36
37impl<DB: Backend> QueryBuilder<DB> for MysqlLikeQueryBuilder<DB> {
38    fn push_sql(&mut self, sql: &str) {
39        self.sql.push_str(sql);
40    }
41
42    fn push_identifier(&mut self, identifier: &str) -> QueryResult<()> {
43        self.push_sql("`");
44        self.push_sql(&identifier.replace('`', "``"));
45        self.push_sql("`");
46        Ok(())
47    }
48
49    fn push_bind_param(&mut self) {
50        self.push_sql("?");
51    }
52
53    fn finish(self) -> String {
54        self.sql
55    }
56}