chain_builder/query/
mod.rs1pub mod common;
4pub mod join;
5
6use crate::types::{Client, Common, Statement};
7use serde_json::Value;
8
9#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
11pub struct QueryBuilder {
12 pub(crate) statement: Vec<Statement>,
14 pub(crate) raw: Vec<(String, Option<Vec<Value>>)>,
16 pub(crate) join: Vec<join::JoinBuilder>,
18 pub(crate) query_common: Vec<Common>,
20 pub(crate) client: Client,
22}
23
24impl QueryBuilder {
25 pub fn new(client: Client) -> Self {
27 Self {
28 statement: Vec::new(),
29 raw: Vec::new(),
30 join: Vec::new(),
31 query_common: Vec::new(),
32 client,
33 }
34 }
35}
36
37impl Default for QueryBuilder {
38 fn default() -> Self {
39 Self::new(Client::Mysql)
40 }
41}
42
43#[derive(Debug, Clone, serde::Serialize, serde::Deserialize, PartialEq)]
45pub enum Operator {
46 Equal,
48 NotEqual,
50 In,
52 NotIn,
54 IsNull,
56 IsNotNull,
58 Exists,
60 NotExists,
62 Between,
64 NotBetween,
66 Like,
68 NotLike,
70 GreaterThan,
72 GreaterThanOrEqual,
74 LessThan,
76 LessThanOrEqual,
78 GreaterORLessThan,
80}