diesel/pg/query_builder/
mod.rs1use super::backend::Pg;
2use query_builder::QueryBuilder;
3use result::QueryResult;
4
5mod distinct_on;
6mod query_fragment_impls;
7pub use self::distinct_on::DistinctOnClause;
8
9#[allow(missing_debug_implementations)]
11#[derive(Default)]
12pub struct PgQueryBuilder {
13 sql: String,
14 bind_idx: u32,
15}
16
17impl PgQueryBuilder {
18 pub fn new() -> Self {
20 PgQueryBuilder::default()
21 }
22}
23
24impl QueryBuilder<Pg> for PgQueryBuilder {
25 fn push_sql(&mut self, sql: &str) {
26 self.sql.push_str(sql);
27 }
28
29 fn push_identifier(&mut self, identifier: &str) -> QueryResult<()> {
30 self.push_sql("\"");
31 self.push_sql(&identifier.replace('"', "\"\""));
32 self.push_sql("\"");
33 Ok(())
34 }
35
36 fn push_bind_param(&mut self) {
37 self.bind_idx += 1;
38 let sql = format!("${}", self.bind_idx);
39 self.push_sql(&sql);
40 }
41
42 fn finish(self) -> String {
43 self.sql
44 }
45}