refactor: moved all query logic to query class

This commit is contained in:
Aradhya 2022-06-15 12:34:02 +05:30 committed by Gavin D'souza
parent d0680941ad
commit fca026927e
2 changed files with 7 additions and 10 deletions

View file

@ -723,13 +723,6 @@ class Database(object):
):
field_objects = []
if not isinstance(fields, Criterion):
for field in fields:
if "(" in str(field) or " as " in str(field):
field_objects.append(PseudoColumn(field))
else:
field_objects.append(field)
query = self.query.get_sql(
table=doctype,
filters=filters,

View file

@ -370,6 +370,10 @@ class Query:
return None
is_list = isinstance(fields, (list, tuple, set))
if is_list and len(fields) == 1:
fields = fields[0]
is_list = False
is_str = isinstance(fields, str)
def add_functions(fields):
@ -389,7 +393,7 @@ class Query:
func = fields.split("(")[0].casefold().split()
func = [f for f in func if f in sql_functions][0]
args = fields[len(func) + 1 : fields.index(")")].split(",")
args = [literal_eval_(arg.strip()) for arg in args]
args = [Field(literal_eval_((arg.strip()))) for arg in args]
return getattr(functions, func.capitalize())(*args)
if is_str and any(
@ -474,7 +478,7 @@ class Query:
# Clean up state before each query
self.tables = {}
criterion = self.build_conditions(table, filters, **kwargs)
fields = self.set_fields(fields, **kwargs)
fields = self.set_fields(kwargs.get("field_objects") or fields, **kwargs)
join = kwargs.get("join").replace(" ", "_") if kwargs.get("join") else "left_join"
@ -487,7 +491,7 @@ class Query:
)
if isinstance(fields, (list, tuple)):
query = criterion.select(*kwargs.get("field_objects", fields))
query = criterion.select(*fields)
elif isinstance(fields, Criterion):
query = criterion.select(fields)