Merge pull request #18756 from ankush/qb_simpler

refactor: qb builder class identification
This commit is contained in:
Ritwik Puri 2022-11-04 17:26:57 +05:30 committed by GitHub
commit ba25e97d4e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
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

@ -112,8 +112,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()