From 5ebaf424689c52cd88cc428842feb917ad7857e0 Mon Sep 17 00:00:00 2001 From: gavin Date: Wed, 18 May 2022 16:59:10 +0530 Subject: [PATCH] feat(db.query): Add support for timespan operator --- frappe/database/query.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/frappe/database/query.py b/frappe/database/query.py index 2af84cc29a..42b2a60af5 100644 --- a/frappe/database/query.py +++ b/frappe/database/query.py @@ -4,6 +4,7 @@ from typing import Any, Dict, List, Tuple, Union import frappe from frappe import _ +from frappe.model.db_query import get_timespan_date_range from frappe.query_builder import Criterion, Field, Order, Table @@ -90,6 +91,20 @@ def func_is(key, value): return Field(key).isnotnull() if value.lower() == "set" else Field(key).isnull() +def func_timespan(key: Field, value: str) -> frappe.qb: + """Wrapper method for `TIMESPAN` + + Args: + key (str): field + value (str): criterion + + Returns: + frappe.qb: `frappe.qb object with `TIMESPAN` + """ + + return func_between(key, get_timespan_date_range(value)) + + def make_function(key: Any, value: Union[int, str]): """returns fucntion query @@ -141,6 +156,7 @@ OPERATOR_MAP = { "regex": func_regex, "between": func_between, "is": func_is, + "timespan": func_timespan, }