chain_builder/query/mod.rs
1//! Query building functionality
2
3pub mod common;
4pub mod join;
5
6use crate::types::{Common, Statement};
7use serde_json::Value;
8
9/// Main query builder for constructing WHERE clauses and other query parts
10#[derive(Debug, Default, Clone, serde::Serialize, serde::Deserialize)]
11pub struct QueryBuilder {
12 /// WHERE clause statements
13 pub(crate) statement: Vec<Statement>,
14 /// Raw SQL statements
15 pub(crate) raw: Vec<(String, Option<Vec<Value>>)>,
16 /// JOIN clauses
17 pub(crate) join: Vec<join::JoinBuilder>,
18 /// Common clauses (WITH, UNION, LIMIT, etc.)
19 pub(crate) query_common: Vec<Common>,
20}
21
22/// SQL comparison operators
23#[derive(Debug, Clone, serde::Serialize, serde::Deserialize, PartialEq)]
24pub enum Operator {
25 /// Equal (=)
26 Equal,
27 /// Not equal (!=)
28 NotEqual,
29 /// IN operator
30 In,
31 /// NOT IN operator
32 NotIn,
33 /// IS NULL
34 IsNull,
35 /// IS NOT NULL
36 IsNotNull,
37 /// EXISTS
38 Exists,
39 /// NOT EXISTS
40 NotExists,
41 /// BETWEEN
42 Between,
43 /// NOT BETWEEN
44 NotBetween,
45 /// LIKE
46 Like,
47 /// NOT LIKE
48 NotLike,
49 /// Greater than (>)
50 GreaterThan,
51 /// Greater than or equal (>=)
52 GreaterThanOrEqual,
53 /// Less than (<)
54 LessThan,
55 /// Less than or equal (<=)
56 LessThanOrEqual,
57 /// Greater or less than (<>)
58 GreaterORLessThan,
59}