@@ -33,7 +33,7 @@ use crate::db::{
3333pub struct Query < T > {
3434 filter : Option < Expr > ,
3535 limit : Option < u64 > ,
36- order_by : Option < ( String , Order ) > ,
36+ order_by : Option < ( FieldRef < T > , Order ) > ,
3737 offset : Option < u64 > ,
3838 phantom_data : PhantomData < fn ( ) -> T > ,
3939}
@@ -167,10 +167,10 @@ impl<T: Model> Query<T> {
167167 /// age: i32,
168168 /// }
169169 ///
170- /// let query = Query::<User>::new().order_by(" age" , Order::Asc); // or Order::Desc
170+ /// let query = Query::<User>::new().order_by(User:: age, Order::Asc); // or Order::Desc
171171 /// ```
172- pub fn order_by ( & mut self , order_by : ( String , Order ) ) -> & mut Self {
173- self . order_by = Some ( self . order_by ) ;
172+ pub fn order_by ( & mut self , order_by : ( FieldRef < T > , Order ) ) -> & mut Self {
173+ self . order_by = Some ( order_by) ;
174174 self
175175 }
176176
@@ -271,7 +271,8 @@ impl<T: Model> Query<T> {
271271
272272 pub ( super ) fn add_order_by_to_statement ( & self , statement : & mut sea_query:: SelectStatement ) {
273273 if let Some ( order_by) = self . order_by {
274- statement. order_by ( order_by. 0 , order_by. 1 ) ;
274+ let column_name = order_by. 0 . identifier ;
275+ statement. order_by ( column_name, order_by. 1 ) ;
275276 }
276277 }
277278
@@ -1062,7 +1063,7 @@ impl Expr {
10621063/// with some common operators like `=`, `!=`, `+`, `-`, `*`, and `/`.
10631064#[ derive( Debug ) ]
10641065pub struct FieldRef < T > {
1065- identifier : Identifier ,
1066+ pub identifier : Identifier ,
10661067 phantom_data : PhantomData < T > ,
10671068}
10681069
0 commit comments