feat: Support for Column comparison in DatabaseQuery
This commit is contained in:
parent
5f678a0d40
commit
77895bbcfc
3 changed files with 24 additions and 2 deletions
|
|
@ -3,6 +3,7 @@
|
|||
"""build query for doclistview and return results"""
|
||||
|
||||
import frappe.defaults
|
||||
from frappe.query_builder.utils import Column
|
||||
import frappe.share
|
||||
from frappe import _
|
||||
import frappe.permissions
|
||||
|
|
@ -546,8 +547,12 @@ class DatabaseQuery(object):
|
|||
value = flt(f.value)
|
||||
fallback = 0
|
||||
|
||||
if isinstance(f.value, Column):
|
||||
quote = '"' if frappe.conf.db_type == 'postgres' else "`"
|
||||
value = f"{tname}.{quote}{f.value}{quote}"
|
||||
|
||||
# escape value
|
||||
if isinstance(value, str) and not f.operator.lower() == 'between':
|
||||
elif isinstance(value, str) and not f.operator.lower() == 'between':
|
||||
value = f"{frappe.db.escape(value, percent=False)}"
|
||||
|
||||
if (
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
from frappe.query_builder.utils import get_query_builder
|
||||
from frappe.query_builder.utils import Column, Data, get_query_builder
|
||||
|
|
|
|||
|
|
@ -4,9 +4,26 @@ from typing import Any, Callable, Dict
|
|||
from pypika import Query
|
||||
|
||||
import frappe
|
||||
|
||||
from .builder import MariaDB, Postgres
|
||||
|
||||
|
||||
class Column:
|
||||
"""Represents a Database Column"""
|
||||
def __init__(self, name) -> None:
|
||||
self.name = name
|
||||
|
||||
def __str__(self) -> str:
|
||||
return self.name
|
||||
|
||||
class Data:
|
||||
"""Represents a Data value...Specifically non column types"""
|
||||
def __init__(self, name) -> None:
|
||||
self.name = name
|
||||
|
||||
def __str__(self) -> str:
|
||||
return self.name
|
||||
|
||||
class db_type_is(Enum):
|
||||
MARIADB = "mariadb"
|
||||
POSTGRES = "postgres"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue