From 2d1491881471ec75099c4d1bbbd13f807b6fc786 Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Wed, 4 Jun 2025 19:15:27 +0530 Subject: [PATCH] fix!: Change count(cache=True) implmentation (#32779) This makes cache implementation uniform for all methods on db API. It's weird that this specific method was caching in redis, which defies expectations. --- frappe/database/database.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frappe/database/database.py b/frappe/database/database.py index 1e8950775c..ce4326b4fb 100644 --- a/frappe/database/database.py +++ b/frappe/database/database.py @@ -1252,10 +1252,10 @@ class Database: def count(self, dt, filters=None, debug=False, cache=False, distinct: bool = True): """Return `COUNT(*)` for given DocType and filters.""" + cache_key = (dt, "COUNT(*)") if cache and not filters: - cache_count = frappe.cache.get_value(f"doctype:count:{dt}") - if cache_count is not None: - return cache_count + if cache_key in self.value_cache: + return self.value_cache[cache_key] count = frappe.qb.get_query( table=dt, filters=filters, @@ -1264,7 +1264,7 @@ class Database: validate_filters=True, ).run(debug=debug)[0][0] if not filters and cache: - frappe.cache.set_value(f"doctype:count:{dt}", count, expires_in_sec=86400) + self.value_cache[cache_key] = count return count def estimate_count(self, doctype: str) -> int: