Get sync sort of working...

This commit is contained in:
Eric Hare 2025-09-04 10:02:07 -07:00
parent da55c9e607
commit 3aad42390e
No known key found for this signature in database
GPG key ID: A73DF73724270AB7
2 changed files with 11 additions and 41 deletions

View file

@ -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)

View file

@ -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