1 use backend::Backend;
2 use expression::{Expression, NonAggregate};
3 use query_builder::*;
4 use result::QueryResult;
5 
6 #[derive(Debug, Copy, Clone, QueryId, Default, DieselNumericOps)]
7 pub struct Grouped<T>(pub T);
8 
9 impl<T: Expression> Expression for Grouped<T> {
10     type SqlType = T::SqlType;
11 }
12 
13 impl<T: QueryFragment<DB>, DB: Backend> QueryFragment<DB> for Grouped<T> {
walk_ast(&self, mut out: AstPass<DB>) -> QueryResult<()>14     fn walk_ast(&self, mut out: AstPass<DB>) -> QueryResult<()> {
15         out.push_sql("(");
16         self.0.walk_ast(out.reborrow())?;
17         out.push_sql(")");
18         Ok(())
19     }
20 }
21 
22 impl_selectable_expression!(Grouped<T>);
23 
24 impl<T: NonAggregate> NonAggregate for Grouped<T> where Grouped<T>: Expression {}
25