Skip to content

Commit 8b11f56

Browse files
committed
refactor select() method
1 parent 3688817 commit 8b11f56

File tree

1 file changed

+17
-14
lines changed

1 file changed

+17
-14
lines changed

simple_query_builder/querybuilder.py

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -345,27 +345,30 @@ def _prepare_tables(self, table: Union[str, list, dict]) -> str:
345345

346346
return self._prepare_aliases(table)
347347

348-
def select(self, table: Union[str, list, dict], fields: Union[str, list, dict] = "*"):
348+
def select(self, table: Union[str, list, dict], fields: Union[str, list, dict] = "*", dist: bool = False):
349349
if not table or not fields:
350350
self.set_error(f"Empty table or fields in {inspect.stack()[0][3]} method")
351351
return self
352352

353-
if isinstance(fields, dict) or isinstance(fields, list) or isinstance(fields, str):
354-
if self._concat:
355-
self._sql += f"SELECT {self._prepare_aliases(fields)}"
356-
else:
357-
self.reset()
358-
self._sql = f"SELECT {self._prepare_aliases(fields)}"
359-
self._fields = fields
353+
prepared_table = self._prepare_tables(table)
354+
prepared_fields = self._prepare_aliases(fields)
355+
356+
if not self._concat:
357+
self.reset()
358+
359+
sql = 'SELECT '
360+
sql += 'DISTINCT ' if dist else ''
361+
if isinstance(table, str) and any(x in table for x in self._FIELD_SPEC_CHARS) and fields == '*':
362+
sql += f"{prepared_table}"
363+
self._fields = self._prepare_aliases(table)
360364
else:
361-
self.set_error(f"Incorrect type of fields in {inspect.stack()[0][3]} method. Fields must be String, List or Dictionary")
362-
return self
365+
self._fields = fields
366+
sql += f"{prepared_fields} FROM {prepared_table}"
363367

364-
if isinstance(table, dict) or isinstance(table, list) or isinstance(table, str):
365-
self._prepare_tables(table)
368+
if self._concat:
369+
self._sql += sql
366370
else:
367-
self.set_error(f"Incorrect type of table in {inspect.stack()[0][3]} method. Table must be String or Dictionary")
368-
return self
371+
self._sql = sql
369372

370373
return self
371374

0 commit comments

Comments
 (0)