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