From 89d4e6670b9b2613d932009a4817b9cf3b225e3a Mon Sep 17 00:00:00 2001 From: David Date: Sat, 14 Sep 2024 12:39:58 +0200 Subject: [PATCH] fix: align signature with backend; use count for perf on filters --- frappe/public/js/frappe/db.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/frappe/public/js/frappe/db.js b/frappe/public/js/frappe/db.js index b569205aa9..2eff45cd04 100644 --- a/frappe/public/js/frappe/db.js +++ b/frappe/public/js/frappe/db.js @@ -24,11 +24,19 @@ frappe.db = { }); }); }, - exists: function (doctype, name) { + exists: function (doctype, nameOrFilters) { return new Promise((resolve) => { - frappe.db.get_value(doctype, { name: name }, "name").then((r) => { - r.message && r.message.name ? resolve(true) : resolve(false); - }); + let filters; + if (typeof nameOrFilters === "string") { + // may be cached and more effecient + frappe.db.get_value(doctype, { name: nameOrFilters }, "name").then((r) => { + r.message && r.message.name ? resolve(true) : resolve(false); + }); + } else if (typeof nameOrFilters === "object") { + frappe.db.count(doctype, { filters: filters, limit: 1 }).then((count) => { + resolve(count > 0); + }); + } }); }, get_value: function (doctype, filters, fieldname, callback, parent_doc) {