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