Skip to content

Commit d46ad63

Browse files
committed
refactor order_by() method
1 parent e2ac2dc commit d46ad63

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

simple_query_builder/querybuilder.py

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)