From 3aad42390e5b683ab5860a938a85db308111f3f6 Mon Sep 17 00:00:00 2001 From: Eric Hare Date: Thu, 4 Sep 2025 10:02:07 -0700 Subject: [PATCH] Get sync sort of working... --- src/api/connectors.py | 8 ++++++- src/connectors/service.py | 44 ++++----------------------------------- 2 files changed, 11 insertions(+), 41 deletions(-) diff --git a/src/api/connectors.py b/src/api/connectors.py index 45369241..426c32ed 100644 --- a/src/api/connectors.py +++ b/src/api/connectors.py @@ -47,7 +47,13 @@ async def connector_sync(request: Request, connector_service, session_manager): for connection in active_connections: logger.debug("About to call sync_connector_files for connection", connection_id=connection.connection_id) task_id = await connector_service.sync_connector_files( - connection.connection_id, user.user_id, max_files, jwt_token=jwt_token + connection.connection_id, + user.user_id, + max_files, + jwt_token=jwt_token, + # NEW: thread picker selections through + selected_files=data.get("selected_files"), + selected_folders=data.get("selected_folders"), ) task_ids.append(task_id) logger.debug("Got task ID", task_id=task_id) diff --git a/src/connectors/service.py b/src/connectors/service.py index c2225f5c..e69b1025 100644 --- a/src/connectors/service.py +++ b/src/connectors/service.py @@ -194,6 +194,8 @@ class ConnectorService: user_id: str, max_files: int = None, jwt_token: str = None, + selected_files: List[str] = None, + selected_folders: List[str] = None, ) -> str: """Sync files from a connector connection using existing task tracking system""" if not self.task_service: @@ -216,41 +218,6 @@ class ConnectorService: if not connector.is_authenticated: raise ValueError(f"Connection '{connection_id}' not authenticated") - # Collect files to process (limited by max_files) - files_to_process = [] - page_token = None - - # Calculate page size to minimize API calls - page_size = min(max_files or 100, 1000) if max_files else 100 - - while True: - # List files from connector with limit - print( - f"[DEBUG] Calling list_files with page_size={page_size}, page_token={page_token}" - ) - file_list = await connector.list_files(page_token, limit=page_size) - print(f"[DEBUG] Got {len(file_list.get('files', []))} files") - files = file_list["files"] - - if not files: - break - - for file_info in files: - if max_files and len(files_to_process) >= max_files: - break - files_to_process.append(file_info) - - # Stop if we have enough files or no more pages - if (max_files and len(files_to_process) >= max_files) or not file_list.get( - "nextPageToken" - ): - break - - page_token = file_list.get("nextPageToken") - - if not files_to_process: - raise ValueError("No files found to sync") - # Get user information user = self.session_manager.get_user(user_id) if self.session_manager else None owner_name = user.name if user else None @@ -262,19 +229,16 @@ class ConnectorService: processor = ConnectorFileProcessor( self, connection_id, - files_to_process, + selected_files, user_id, jwt_token=jwt_token, owner_name=owner_name, owner_email=owner_email, ) - # Use file IDs as items (no more fake file paths!) - file_ids = [file_info["id"] for file_info in files_to_process] - # Create custom task using TaskService task_id = await self.task_service.create_custom_task( - user_id, file_ids, processor + user_id, selected_files, processor ) return task_id