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}