pub enum HavingClause {
Aggregate {
aggregate: String,
operator: WhereOperator,
value: Value,
},
And(Vec<HavingClause>),
Or(Vec<HavingClause>),
Not(Box<HavingClause>),
}Expand description
HAVING clause abstract syntax tree.
HAVING filters aggregated results after GROUP BY, while WHERE filters rows before aggregation.
§Example
use fraiseql_core::db::{HavingClause, WhereOperator};
use serde_json::json;
// Simple condition: COUNT(*) > 10
let having_clause = HavingClause::Aggregate {
aggregate: "count".to_string(),
operator: WhereOperator::Gt,
value: json!(10),
};
// Complex condition: (COUNT(*) > 10) AND (SUM(revenue) >= 1000)
let having_clause = HavingClause::And(vec![
HavingClause::Aggregate {
aggregate: "count".to_string(),
operator: WhereOperator::Gt,
value: json!(10),
},
HavingClause::Aggregate {
aggregate: "revenue_sum".to_string(),
operator: WhereOperator::Gte,
value: json!(1000),
},
]);Variants§
Aggregate
Aggregate field condition (e.g., count_gt, revenue_sum_gte).
Fields
§
operator: WhereOperatorComparison operator.
And(Vec<HavingClause>)
Logical AND of multiple conditions.
Or(Vec<HavingClause>)
Logical OR of multiple conditions.
Not(Box<HavingClause>)
Logical NOT of a condition.
Implementations§
Trait Implementations§
Source§impl Clone for HavingClause
impl Clone for HavingClause
Source§fn clone(&self) -> HavingClause
fn clone(&self) -> HavingClause
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for HavingClause
impl Debug for HavingClause
Source§impl<'de> Deserialize<'de> for HavingClause
impl<'de> Deserialize<'de> for HavingClause
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl PartialEq for HavingClause
impl PartialEq for HavingClause
Source§impl Serialize for HavingClause
impl Serialize for HavingClause
impl StructuralPartialEq for HavingClause
Auto Trait Implementations§
impl Freeze for HavingClause
impl RefUnwindSafe for HavingClause
impl Send for HavingClause
impl Sync for HavingClause
impl Unpin for HavingClause
impl UnsafeUnpin for HavingClause
impl UnwindSafe for HavingClause
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more