From 192a56f9c427350633bd226c60c54961e28e9505 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 13 Jan 2026 19:20:47 +0000 Subject: [PATCH 1/2] Initial plan From 4bd2046c3084ac44c378a3f12531b4cf194716e6 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 13 Jan 2026 19:24:11 +0000 Subject: [PATCH 2/2] Optimize database queries in scheduled tasks - sync.py: Fetch refresh_token and linked_user fields directly, eliminating N get_doc() calls - daily.py: Filter accounts by refresh_token to reduce unnecessary document loads Co-authored-by: mrrobot47 <25586785+mrrobot47@users.noreply.github.com> --- frappe_gmail_thread/tasks/daily.py | 4 +++- frappe_gmail_thread/tasks/sync.py | 7 +++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/frappe_gmail_thread/tasks/daily.py b/frappe_gmail_thread/tasks/daily.py index 04cf712..0c7390f 100644 --- a/frappe_gmail_thread/tasks/daily.py +++ b/frappe_gmail_thread/tasks/daily.py @@ -14,7 +14,9 @@ def enable_pubsub_everyday(): return gmail_accounts = frappe.get_all( - "Gmail Account", filters={"gmail_enabled": 1}, fields=["name"] + "Gmail Account", + filters={"gmail_enabled": 1, "refresh_token": ["is", "set"]}, + fields=["name"], ) for gmail_account in gmail_accounts: gaccount = frappe.get_doc("Gmail Account", gmail_account.name) diff --git a/frappe_gmail_thread/tasks/sync.py b/frappe_gmail_thread/tasks/sync.py index ce47c22..2e487cb 100644 --- a/frappe_gmail_thread/tasks/sync.py +++ b/frappe_gmail_thread/tasks/sync.py @@ -6,12 +6,11 @@ def sync_emails(): gmail_accounts = frappe.get_all( "Gmail Account", filters={"gmail_enabled": 1}, - fields=["name"], + fields=["name", "refresh_token", "linked_user"], ) for gmail_account in gmail_accounts: - gaccount = frappe.get_doc("Gmail Account", gmail_account.name) - if gaccount.refresh_token: - user = gaccount.linked_user + if gmail_account.refresh_token: + user = gmail_account.linked_user job_name = f"gmail_thread_sync_{user}" if not is_job_enqueued(job_name): frappe.enqueue(