MCPcopy
hub / github.com/simstudioai/sim / processWorkspace

Function processWorkspace

packages/db/scripts/migrate-block-api-keys-to-byok.ts:370–598  ·  view source on GitHub ↗
(
  workspaceId: string,
  allBlockTypes: string[],
  userFilter: ReturnType<typeof sql>,
  total: number,
  index: number
)

Source from the content-addressed store, hash-verified

368}
369
370async 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,

Callers 1

runFunction · 0.85

Calls 15

generateIdFunction · 0.90
createEmptyStatsFunction · 0.85
parseToolInputValueFunction · 0.85
resolveKeyFunction · 0.85
maskKeyFunction · 0.85
joinMethod · 0.80
logMethod · 0.80
errorMethod · 0.80
isEnvVarReferenceFunction · 0.70
encryptSecretFunction · 0.70
getMethod · 0.65
setMethod · 0.65

Tested by

no test coverage detected