( workspaceId: string, allBlockTypes: string[], userFilter: ReturnType<typeof sql>, total: number, index: number )
| 368 | } |
| 369 | |
| 370 | async function processWorkspace( |
| 371 | workspaceId: string, |
| 372 | allBlockTypes: string[], |
| 373 | userFilter: ReturnType<typeof sql>, |
| 374 | total: number, |
| 375 | index: number |
| 376 | ): Promise<WorkspaceResult> { |
| 377 | const stats = createEmptyStats() |
| 378 | |
| 379 | try { |
| 380 | const [blocks, wsRows] = await Promise.all([ |
| 381 | db |
| 382 | .select({ |
| 383 | blockId: workflowBlocks.id, |
| 384 | blockName: workflowBlocks.name, |
| 385 | blockType: workflowBlocks.type, |
| 386 | subBlocks: workflowBlocks.subBlocks, |
| 387 | workflowId: workflow.id, |
| 388 | workflowName: workflow.name, |
| 389 | userId: workflow.userId, |
| 390 | }) |
| 391 | .from(workflowBlocks) |
| 392 | .innerJoin(workflow, eq(workflowBlocks.workflowId, workflow.id)) |
| 393 | .where( |
| 394 | sql`${workflow.workspaceId} = ${workspaceId} AND ${workflowBlocks.type} IN (${sql.join( |
| 395 | allBlockTypes.map((t) => sql`${t}`), |
| 396 | sql`, ` |
| 397 | )})${userFilter}` |
| 398 | ), |
| 399 | db |
| 400 | .select({ ownerId: workspaceTable.ownerId }) |
| 401 | .from(workspaceTable) |
| 402 | .where(eq(workspaceTable.id, workspaceId)) |
| 403 | .limit(1), |
| 404 | ]) |
| 405 | |
| 406 | const workspaceOwnerId = wsRows[0]?.ownerId ?? null |
| 407 | |
| 408 | console.log( |
| 409 | `[${index}/${total}] [Workspace ${workspaceId}] ${blocks.length} blocks, owner=${workspaceOwnerId ?? 'unknown'}` |
| 410 | ) |
| 411 | |
| 412 | const providerKeys = new Map<string, RawKeyRef[]>() |
| 413 | |
| 414 | for (const block of blocks) { |
| 415 | const subBlocks = block.subBlocks as Record<string, { value?: any }> |
| 416 | |
| 417 | const providerId = BLOCK_TYPE_TO_PROVIDER[block.blockType] |
| 418 | if (providerId) { |
| 419 | const val = subBlocks?.apiKey?.value |
| 420 | if (typeof val === 'string' && val.trim()) { |
| 421 | const refs = providerKeys.get(providerId) ?? [] |
| 422 | refs.push({ |
| 423 | rawValue: val, |
| 424 | blockName: block.blockName, |
| 425 | workflowId: block.workflowId, |
| 426 | workflowName: block.workflowName, |
| 427 | userId: block.userId, |
no test coverage detected