From 826e59309a5aa9ca72dd6262046870169dfe6ec4 Mon Sep 17 00:00:00 2001 From: Chris Tsang Date: Sat, 8 May 2021 16:40:09 +0800 Subject: [PATCH] Order By --- src/query/select.rs | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/src/query/select.rs b/src/query/select.rs index f08b684b..c844238c 100644 --- a/src/query/select.rs +++ b/src/query/select.rs @@ -2,7 +2,7 @@ use crate::{EntityTrait, Identity, Iterable, RelationDef, Statement}; use core::fmt::Debug; use core::marker::PhantomData; pub use sea_query::JoinType; -use sea_query::{Expr, Iden, IntoIden, QueryBuilder, SelectStatement, SimpleExpr}; +use sea_query::{Expr, Iden, IntoIden, Order, QueryBuilder, SelectStatement, SimpleExpr}; use std::rc::Rc; #[derive(Debug)] @@ -59,6 +59,16 @@ where self } + pub fn order_by(mut self, col: E::Column) -> Self { + self.select.order_by((E::default(), col), Order::Asc); + self + } + + pub fn order_by_desc(mut self, col: E::Column) -> Self { + self.select.order_by((E::default(), col), Order::Desc); + self + } + pub fn left_join(self, relation: RelationDef) -> Self { self.prepare_join(JoinType::LeftJoin, relation) } @@ -167,4 +177,22 @@ mod tests { "SELECT `cake`.`id`, `cake`.`name` FROM `cake` WHERE `cake`.`id` = 11 LIMIT 1" ); } + + #[test] + fn test_6() { + assert_eq!( + cake::Entity::find() + .order_by(cake::Column::Id) + .build(MysqlQueryBuilder) + .to_string(), + "SELECT `cake`.`id`, `cake`.`name` FROM `cake` ORDER BY `cake`.`id` ASC" + ); + assert_eq!( + cake::Entity::find() + .order_by_desc(cake::Column::Id) + .build(MysqlQueryBuilder) + .to_string(), + "SELECT `cake`.`id`, `cake`.`name` FROM `cake` ORDER BY `cake`.`id` DESC" + ); + } }