diesel/query_builder/
order_clause.rs1use alloc::boxed::Box;
2
3use crate::backend::{Backend, DieselReserveSpecialization};
use crate::result::QueryResult;
use crate::query_builder::QueryId;
use super::{QueryFragment, AstPass};
#[doc = r" DSL node that represents that no order clause is set"]
pub struct NoOrderClause;
#[automatically_derived]
impl ::core::fmt::Debug for NoOrderClause {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::write_str(f, "NoOrderClause")
}
}
#[automatically_derived]
#[doc(hidden)]
unsafe impl ::core::clone::TrivialClone for NoOrderClause { }
#[automatically_derived]
impl ::core::clone::Clone for NoOrderClause {
#[inline]
fn clone(&self) -> NoOrderClause { *self }
}
#[automatically_derived]
impl ::core::marker::Copy for NoOrderClause { }
const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl diesel::query_builder::QueryId for NoOrderClause {
type QueryId = NoOrderClause<>;
const HAS_STATIC_QUERY_ID: bool = true;
const IS_WINDOW_FUNCTION: bool = false;
}
};
impl<DB> QueryFragment<DB> for NoOrderClause where DB: Backend +
DieselReserveSpecialization {
fn walk_ast<'b>(&'b self, _: AstPass<'_, 'b, DB>) -> QueryResult<()> {
Ok(())
}
}
#[doc = r" DSL node that represents that an order clause is set"]
pub struct OrderClause<Expr>(pub Expr);
#[automatically_derived]
impl<Expr: ::core::fmt::Debug> ::core::fmt::Debug for OrderClause<Expr> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_tuple_field1_finish(f, "OrderClause",
&&self.0)
}
}
#[automatically_derived]
impl<Expr: ::core::clone::Clone> ::core::clone::Clone for OrderClause<Expr> {
#[inline]
fn clone(&self) -> OrderClause<Expr> {
OrderClause(::core::clone::Clone::clone(&self.0))
}
}
#[automatically_derived]
impl<Expr: ::core::marker::Copy> ::core::marker::Copy for OrderClause<Expr> {
}
const _: () =
{
use diesel;
#[allow(non_camel_case_types)]
impl<Expr: diesel::query_builder::QueryId>
diesel::query_builder::QueryId for OrderClause<Expr> {
type QueryId =
OrderClause<<Expr as
diesel::query_builder::QueryId>::QueryId>;
const HAS_STATIC_QUERY_ID: bool =
<Expr as diesel::query_builder::QueryId>::HAS_STATIC_QUERY_ID
&& true;
const IS_WINDOW_FUNCTION: bool =
<Expr as diesel::query_builder::QueryId>::IS_WINDOW_FUNCTION
|| false;
}
};
impl<Expr, DB> QueryFragment<DB> for OrderClause<Expr> where DB: Backend +
DieselReserveSpecialization, Expr: QueryFragment<DB> {
fn walk_ast<'b>(&'b self, mut out: AstPass<'_, 'b, DB>)
-> QueryResult<()> {
out.push_sql(" ORDER BY ");
self.0.walk_ast(out.reborrow())?;
Ok(())
}
}simple_clause!(
4 NoOrderClause,
6 OrderClause,
8 " ORDER BY "
9);
10
11impl<'a, DB, Expr> From<OrderClause<Expr>> for Option<Box<dyn QueryFragment<DB> + Send + 'a>>
12where
13 DB: Backend,
14 Expr: QueryFragment<DB> + Send + 'a,
15{
16 fn from(order: OrderClause<Expr>) -> Self {
17 Some(Box::new(order.0))
18 }
19}
20
21impl<DB> From<NoOrderClause> for Option<Box<dyn QueryFragment<DB> + Send + '_>>
22where
23 DB: Backend,
24{
25 fn from(_: NoOrderClause) -> Self {
26 None
27 }
28}