Skip to main content

diesel/query_builder/
order_clause.rs

1use 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    /// DSL node that represents that no order clause is set
5    NoOrderClause,
6    /// DSL node that represents that an order clause is set
7    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}