diesel/expression/
grouped.rs

1use 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>);