Skip to content

Commit fd2e63a

Browse files
committed
add _prepare_field() method, refactor _prepare_fieldlist() method
1 parent 7f1cdee commit fd2e63a

File tree

1 file changed

+25
-5
lines changed

1 file changed

+25
-5
lines changed

simple_query_builder/querybuilder.py

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,7 @@ def _prepare_sorting(self, field: str = '', sort: str = '') -> tuple:
342342
field = splitted[0]
343343
sort = splitted[1]
344344

345-
field = field.replace('.', '`.`')
345+
field = self._prepare_field(field)
346346

347347
if sort == '':
348348
sort = 'ASC'
@@ -351,11 +351,31 @@ def _prepare_sorting(self, field: str = '', sort: str = '') -> tuple:
351351

352352
return f"`{field}`", sort
353353

354-
def _prepare_fieldlist(self, fields: Union[tuple, list] = ()) -> str:
355-
if fields == () or fields == []:
356-
self.set_error(f"Empty fieldlist in {inspect.stack()[0][3]} method")
354+
def _prepare_field(self, field: str = '') -> str:
355+
if field == '':
356+
self.set_error(f"Empty field in {inspect.stack()[0][3]} method")
357357
return ''
358-
return ', '.join(fields)
358+
359+
if field.find('(') > -1 or field.find(')') > -1:
360+
return f"{field}"
361+
else:
362+
field = field.replace('.', '`.`')
363+
field = field.replace(' AS ', '` AS `')
364+
return f"`{field}`"
365+
366+
def _prepare_fieldlist(self, fields: Union[str, tuple, list] = ()) -> str:
367+
result = ''
368+
if fields == '' or fields == () or fields == []:
369+
self.set_error(f"Empty fields in {inspect.stack()[0][3]} method")
370+
return result
371+
372+
if isinstance(fields, str):
373+
result = self._prepare_field(fields)
374+
elif isinstance(fields, tuple) or isinstance(fields, list):
375+
fields = [f"{self._prepare_field(field)}" for field in fields]
376+
result = ', '.join(fields)
377+
378+
return result
359379

360380
def order_by(self, field: Union[str, tuple, list] = (), sort: str = ''):
361381
if field == '' or field == () or field == []:

0 commit comments

Comments
 (0)