pub mod common;
pub mod join;
use crate::types::{Client, Common, Statement};
use serde_json::Value;
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct QueryBuilder {
pub(crate) statement: Vec<Statement>,
pub(crate) raw: Vec<(String, Option<Vec<Value>>)>,
pub(crate) join: Vec<join::JoinBuilder>,
pub(crate) query_common: Vec<Common>,
pub(crate) client: Client,
}
impl QueryBuilder {
pub fn new(client: Client) -> Self {
Self {
statement: Vec::new(),
raw: Vec::new(),
join: Vec::new(),
query_common: Vec::new(),
client,
}
}
}
impl Default for QueryBuilder {
fn default() -> Self {
Self::new(Client::Mysql)
}
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize, PartialEq)]
pub enum Operator {
Equal,
NotEqual,
In,
NotIn,
IsNull,
IsNotNull,
Exists,
NotExists,
Between,
NotBetween,
Like,
NotLike,
GreaterThan,
GreaterThanOrEqual,
LessThan,
LessThanOrEqual,
GreaterORLessThan,
}