#![allow(missing_docs)]
use super::QueryBuilder;
use crate::model::Model;
mod or_branch;
mod or_branch_builder;
mod or_group;
pub use or_branch::OrBranch;
pub use or_branch_builder::OrBranchBuilder;
pub use or_group::OrGroup;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Order {
Asc,
Desc,
}
impl Order {
pub fn as_str(&self) -> &'static str {
match self {
Order::Asc => "ASC",
Order::Desc => "DESC",
}
}
}
#[derive(Debug, Clone)]
pub enum Operator {
Eq,
NotEq,
Gt,
Gte,
Lt,
Lte,
Like,
LikeEscaped,
NotLike,
In,
NotIn,
IsNull,
IsNotNull,
Between,
JsonContains,
JsonContainedBy,
JsonKeyExists,
JsonKeyNotExists,
JsonPathExists,
JsonPathNotExists,
ArrayContains,
ArrayContainedBy,
ArrayOverlaps,
ArrayContainsAny,
ArrayContainsAll,
SubqueryIn,
SubqueryNotIn,
Raw,
EqAny,
NeAll,
}
#[derive(Debug, Clone)]
pub struct WhereCondition {
pub column: String,
pub operator: Operator,
pub value: ConditionValue,
}
#[derive(Debug, Clone)]
pub enum ConditionValue {
Single(serde_json::Value),
List(Vec<serde_json::Value>),
Range(serde_json::Value, serde_json::Value),
None,
Subquery(String),
RawExpr(String),
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum LogicalOp {
And,
Or,
}
impl LogicalOp {
pub fn as_sql(&self) -> &'static str {
match self {
LogicalOp::And => "AND",
LogicalOp::Or => "OR",
}
}
}