sea_query/backend/sqlite/
mod.rs

1pub(crate) mod foreign_key;
2pub(crate) mod index;
3pub(crate) mod query;
4pub(crate) mod table;
5
6use super::*;
7
8/// Sqlite query builder.
9#[derive(Default, Debug)]
10pub struct SqliteQueryBuilder;
11
12const QUOTE: Quote = Quote(b'"', b'"');
13
14impl GenericBuilder for SqliteQueryBuilder {}
15
16impl SchemaBuilder for SqliteQueryBuilder {}
17
18impl QuotedBuilder for SqliteQueryBuilder {
19    fn quote(&self) -> Quote {
20        QUOTE
21    }
22}
23
24impl EscapeBuilder for SqliteQueryBuilder {
25    fn write_escaped(&self, buffer: &mut dyn Write, string: &str) {
26        for char in string.chars() {
27            match char {
28                '\'' => buffer.write_str("''"),
29                c => buffer.write_char(c),
30            }
31            .unwrap()
32        }
33    }
34
35    fn unescape_string(&self, string: &str) -> String {
36        string.replace("''", "'")
37    }
38}
39
40impl TableRefBuilder for SqliteQueryBuilder {}
41
42impl PrecedenceDecider for SqliteQueryBuilder {
43    fn inner_expr_well_known_greater_precedence(&self, inner: &Expr, outer_oper: &Oper) -> bool {
44        common_inner_expr_well_known_greater_precedence(inner, outer_oper)
45    }
46}
47
48impl OperLeftAssocDecider for SqliteQueryBuilder {
49    fn well_known_left_associative(&self, op: &BinOper) -> bool {
50        common_well_known_left_associative(op)
51    }
52}