From caf2525ab5d32ffbb6db0c96a5e4109996a24030 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Thu, 2 Apr 2026 22:29:07 +0530 Subject: [PATCH] fix: update folder ID collection logic to include deleted directories and adjust test cases for document titles --- .../connector_indexers/local_folder_indexer.py | 15 ++++++++++++++- .../test_local_folder_pipeline.py | 4 ++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/surfsense_backend/app/tasks/connector_indexers/local_folder_indexer.py b/surfsense_backend/app/tasks/connector_indexers/local_folder_indexer.py index 591914625..93c6649a2 100644 --- a/surfsense_backend/app/tasks/connector_indexers/local_folder_indexer.py +++ b/surfsense_backend/app/tasks/connector_indexers/local_folder_indexer.py @@ -610,12 +610,25 @@ async def index_local_folder( # ================================================================ # PHASE 1.5: Delete documents no longer on disk # ================================================================ + # Collect ALL folder IDs under this root (including folders that no + # longer exist on disk but still have rows in the DB) so we catch + # documents in deleted directories too. + all_root_folder_ids = set(folder_mapping.values()) + all_db_folders = ( + await session.execute( + select(Folder.id).where( + Folder.search_space_id == search_space_id, + ) + ) + ).scalars().all() + all_root_folder_ids.update(all_db_folders) + all_folder_docs = ( await session.execute( select(Document).where( Document.document_type == DocumentType.LOCAL_FOLDER_FILE, Document.search_space_id == search_space_id, - Document.folder_id.in_(list(folder_mapping.values())), + Document.folder_id.in_(list(all_root_folder_ids)), ) ) ).scalars().all() diff --git a/surfsense_backend/tests/integration/indexing_pipeline/test_local_folder_pipeline.py b/surfsense_backend/tests/integration/indexing_pipeline/test_local_folder_pipeline.py index e46d59a67..34efad789 100644 --- a/surfsense_backend/tests/integration/indexing_pipeline/test_local_folder_pipeline.py +++ b/surfsense_backend/tests/integration/indexing_pipeline/test_local_folder_pipeline.py @@ -485,8 +485,8 @@ class TestFolderMirroring: ) ).scalars().all() - today_doc = next(d for d in docs if d.title == "today") - root_doc = next(d for d in docs if d.title == "root") + today_doc = next(d for d in docs if d.title == "today.md") + root_doc = next(d for d in docs if d.title == "root.md") daily_folder = ( await db_session.execute(