refactor: qb builder class identification

This commit is contained in:
Ankush Menat 2022-11-04 15:40:58 +05:30
parent fec24632a9
commit f0197d35d6
3 changed files with 5 additions and 10 deletions

View file

@ -47,6 +47,8 @@ class Base:
class MariaDB(Base, MySQLQuery):
Field = terms.Field
_BuilderClasss = MySQLQueryBuilder
@classmethod
def _builder(cls, *args, **kwargs) -> "MySQLQueryBuilder":
return super()._builder(*args, wrapper_cls=ParameterizedValueWrapper, **kwargs)
@ -70,6 +72,8 @@ class Postgres(Base, PostgreSQLQuery):
# they are two different objects. The quick fix used here is to replace the
# Field names in the "Field" function.
_BuilderClasss = PostgreSQLQueryBuilder
@classmethod
def _builder(cls, *args, **kwargs) -> "PostgreSQLQueryBuilder":
return super()._builder(*args, wrapper_cls=ParameterizedValueWrapper, **kwargs)

View file

@ -102,8 +102,7 @@ def patch_query_execute():
raise frappe.PermissionError("Only SELECT SQL allowed in scripting")
return query, param_collector.get_parameters()
query_class = get_attr(str(frappe.qb).split("'")[1])
builder_class = get_type_hints(query_class._builder).get("return")
builder_class = frappe.qb._BuilderClasss
if not builder_class:
raise BuilderIdentificationFailed

View file

@ -373,11 +373,3 @@ class TestMisc(FrappeTestCase):
DocType = Table("DocType")
self.assertEqual(DocType.get_sql(), "DocType")
def test_error_on_query_class(self):
import frappe.query_builder.utils
frappe.query_builder.utils.get_type_hints = lambda x: {"return": None}
with self.assertRaises(frappe.query_builder.utils.BuilderIdentificationFailed):
frappe.query_builder.utils.patch_query_execute()