@@ -336,7 +336,7 @@ def offset(self, offset: int = 0):
336336 self ._sql += f" OFFSET { offset } "
337337 return self
338338
339- def _prepare_sorting (self , field : str = '' , sort : str = '' ):
339+ def _prepare_sorting (self , field : str = '' , sort : str = '' ) -> tuple :
340340 if field .find (' ' ) > - 1 :
341341 splitted = field .split (' ' )
342342 field = splitted [0 ]
@@ -349,19 +349,23 @@ def _prepare_sorting(self, field: str = '', sort: str = ''):
349349 else :
350350 sort = sort .upper ()
351351
352- return field , sort
352+ return f"` { field } `" , sort
353353
354- def order_by (self , field : str = '' , sort : str = '' ):
355- if field == '' :
354+ def order_by (self , field : Union [ str , tuple , list ] = () , sort : str = '' ):
355+ if field == '' or field == () or field == [] :
356356 self .set_error (f"Empty field in { inspect .stack ()[0 ][3 ]} method" )
357357 return self
358358
359- field , sort = self ._prepare_sorting (field , sort )
359+ if isinstance (field , str ):
360+ field , sort = self ._prepare_sorting (field , sort )
360361
361- if sort in self ._SORT_TYPES :
362- self ._sql += f" ORDER BY `{ field } ` { sort } "
363- else :
364- self ._sql += f" ORDER BY `{ field } `"
362+ if sort in self ._SORT_TYPES :
363+ self ._sql += f" ORDER BY { field } { sort } "
364+ else :
365+ self ._sql += f" ORDER BY { field } "
366+ elif isinstance (field , tuple ) or isinstance (field , list ):
367+ new_list = [f"{ self ._prepare_sorting (item )[0 ]} { self ._prepare_sorting (item )[1 ]} " for item in field ]
368+ self ._sql += ' ORDER BY ' + ', ' .join (new_list )
365369
366370 return self
367371
0 commit comments