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