elif_orm/query/
ordering.rs1use super::builder::QueryBuilder;
4use super::types::*;
5use serde_json::Value;
6
7impl<M> QueryBuilder<M> {
8 pub fn order_by(mut self, column: &str) -> Self {
10 self.order_by
11 .push((column.to_string(), OrderDirection::Asc));
12 self
13 }
14
15 pub fn order_by_desc(mut self, column: &str) -> Self {
17 self.order_by
18 .push((column.to_string(), OrderDirection::Desc));
19 self
20 }
21
22 pub fn group_by(mut self, column: &str) -> Self {
24 self.group_by.push(column.to_string());
25 self
26 }
27
28 pub fn having_eq<T: Into<Value>>(mut self, column: &str, value: T) -> Self {
30 self.having_conditions.push(WhereCondition {
31 column: column.to_string(),
32 operator: QueryOperator::Equal,
33 value: Some(value.into()),
34 values: Vec::new(),
35 });
36 self
37 }
38
39 pub fn having<T: Into<Value>>(
41 mut self,
42 column: &str,
43 operator: QueryOperator,
44 value: T,
45 ) -> Self {
46 self.having_conditions.push(WhereCondition {
47 column: column.to_string(),
48 operator,
49 value: Some(value.into()),
50 values: Vec::new(),
51 });
52 self
53 }
54
55 pub fn having_raw(mut self, raw_condition: &str) -> Self {
57 self.having_conditions.push(WhereCondition {
58 column: "".to_string(), operator: QueryOperator::Raw,
60 value: Some(Value::String(raw_condition.to_string())),
61 values: Vec::new(),
62 });
63 self
64 }
65}