use super::builder::QueryBuilder;
use super::types::*;
use serde_json::Value;
impl<M> QueryBuilder<M> {
pub fn order_by(mut self, column: &str) -> Self {
self.order_by
.push((column.to_string(), OrderDirection::Asc));
self
}
pub fn order_by_desc(mut self, column: &str) -> Self {
self.order_by
.push((column.to_string(), OrderDirection::Desc));
self
}
pub fn group_by(mut self, column: &str) -> Self {
self.group_by.push(column.to_string());
self
}
pub fn having_eq<T: Into<Value>>(mut self, column: &str, value: T) -> Self {
self.having_conditions.push(WhereCondition {
column: column.to_string(),
operator: QueryOperator::Equal,
value: Some(value.into()),
values: Vec::new(),
});
self
}
pub fn having<T: Into<Value>>(
mut self,
column: &str,
operator: QueryOperator,
value: T,
) -> Self {
self.having_conditions.push(WhereCondition {
column: column.to_string(),
operator,
value: Some(value.into()),
values: Vec::new(),
});
self
}
pub fn having_raw(mut self, raw_condition: &str) -> Self {
self.having_conditions.push(WhereCondition {
column: "".to_string(), operator: QueryOperator::Raw,
value: Some(Value::String(raw_condition.to_string())),
values: Vec::new(),
});
self
}
}