fix: allow Table instance
This commit is contained in:
parent
fe13108eec
commit
95d8a0f919
2 changed files with 18 additions and 4 deletions
|
|
@ -5,11 +5,12 @@ from types import BuiltinFunctionType
|
|||
from typing import TYPE_CHECKING
|
||||
|
||||
import sqlparse
|
||||
from pypika.queries import QueryBuilder
|
||||
from pypika.queries import QueryBuilder, Table
|
||||
|
||||
import frappe
|
||||
from frappe import _
|
||||
from frappe.database.operator_map import OPERATOR_MAP
|
||||
from frappe.database.utils import get_doctype_name
|
||||
from frappe.query_builder import Criterion, Field, Order, functions
|
||||
from frappe.query_builder.functions import Function, SqlFunctions
|
||||
from frappe.query_builder.utils import PseudoColumnMapper
|
||||
|
|
@ -28,7 +29,7 @@ COMMA_PATTERN = re.compile(r",\s*(?![^()]*\))")
|
|||
class Engine:
|
||||
def get_query(
|
||||
self,
|
||||
table: str,
|
||||
table: str | Table,
|
||||
fields: list | tuple | None = None,
|
||||
filters: dict[str, str | int] | str | int | list[list | str | int] | None = None,
|
||||
order_by: str | None = None,
|
||||
|
|
@ -43,8 +44,13 @@ class Engine:
|
|||
) -> QueryBuilder:
|
||||
self.is_mariadb = frappe.db.db_type == "mariadb"
|
||||
self.is_postgres = frappe.db.db_type == "postgres"
|
||||
self.doctype = table
|
||||
self.table = frappe.qb.DocType(table)
|
||||
|
||||
if isinstance(table, Table):
|
||||
self.table = table
|
||||
self.doctype = get_doctype_name(table.get_sql())
|
||||
else:
|
||||
self.doctype = table
|
||||
self.table = frappe.qb.DocType(table)
|
||||
|
||||
if update:
|
||||
self.query = frappe.qb.update(self.table)
|
||||
|
|
|
|||
|
|
@ -34,6 +34,14 @@ def is_pypika_function_object(field: str) -> bool:
|
|||
return getattr(field, "__module__", None) == "pypika.functions" or isinstance(field, Function)
|
||||
|
||||
|
||||
def get_doctype_name(table_name: str) -> str:
|
||||
if "tab" in table_name:
|
||||
table_name = table_name.replace("tab", "")
|
||||
table_name = table_name.replace("`", "")
|
||||
table_name = table_name.replace('"', "")
|
||||
return table_name
|
||||
|
||||
|
||||
class LazyString:
|
||||
def _setup(self) -> None:
|
||||
raise NotImplementedError
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue