MCPcopy
hub / github.com/Kong/insomnia / deleteStaleRequests

Function deleteStaleRequests

packages/insomnia/src/konnect/sync.ts:364–421  ·  view source on GitHub ↗

* Deletes stale konnect-managed requests (route removed from Konnect) and * any user-added requests (no konnectRouteKey) found in the workspace.

(
  existingData: ExistingRequestData,
  incomingKeys: Set<string>,
  incomingRouteIds: Set<string>,
  routeCounts: SyncCounts,
)

Source from the content-addressed store, hash-verified

362 * any user-added requests (no konnectRouteKey) found in the workspace.
363 */
364async function deleteStaleRequests(
365 existingData: ExistingRequestData,
366 incomingKeys: Set<string>,
367 incomingRouteIds: Set<string>,
368 routeCounts: SyncCounts,
369): Promise<void> {
370 // Delete konnect-managed requests whose key no longer matches an incoming route
371 const stale: (() => Promise<void>)[] = [
372 ...[...existingData.maps.http.values()]
373 .filter(r => !incomingKeys.has(r.konnectRouteKey!))
374 .map(r => () => insoservices.request.remove(r)),
375 ...[...existingData.maps.ws.values()]
376 .filter(r => !incomingKeys.has(r.konnectRouteKey!))
377 .map(r => () => insoservices.webSocketRequest.remove(r)),
378 ...[...existingData.maps.grpc.values()]
379 .filter(r => !incomingKeys.has(r.konnectRouteKey!))
380 .map(r => () => insoservices.grpcRequest.remove(r)),
381 ];
382
383 // Delete user-added requests (no konnectRouteKey) that live in the workspace or its folders.
384 const noKeyQuery = {
385 parentId: { $in: existingData.parentIds },
386 $or: [{ konnectRouteKey: null }, { konnectRouteKey: { $exists: false } }],
387 };
388 const userHttp = await db.find<Request>(models.request.type, noKeyQuery);
389 const userWs = await db.find<WebSocketRequest>(models.webSocketRequest.type, noKeyQuery);
390 const userGrpc = await db.find<GrpcRequest>(models.grpcRequest.type, noKeyQuery);
391 stale.push(
392 ...userHttp.map(r => () => insoservices.request.remove(r)),
393 ...userWs.map(r => () => insoservices.webSocketRequest.remove(r)),
394 ...userGrpc.map(r => () => insoservices.grpcRequest.remove(r)),
395 );
396
397 for (const remove of stale) {
398 await remove();
399 routeCounts.deleted++;
400 }
401
402 // Delete orphaned folders (route removed from Konnect) and empty sub-folders
403 // (path/protocol renamed — requests were already deleted above, leaving the sub-folder empty).
404 const folderIds = existingData.folders.map(f => f._id);
405 const foldersWithChildren = new Set<string>([
406 ...(await db.find<Request>(models.request.type, { parentId: { $in: folderIds } })).map(r => r.parentId),
407 ...(await db.find<WebSocketRequest>(models.webSocketRequest.type, { parentId: { $in: folderIds } })).map(
408 r => r.parentId,
409 ),
410 ...(await db.find<GrpcRequest>(models.grpcRequest.type, { parentId: { $in: folderIds } })).map(r => r.parentId),
411 ...(await db.find<RequestGroup>(models.requestGroup.type, { parentId: { $in: folderIds } })).map(f => f.parentId),
412 ]);
413 for (const folder of existingData.folders) {
414 if (!folder.konnectRouteId) {
415 continue;
416 }
417 if (!incomingRouteIds.has(folder.konnectRouteId) || !foldersWithChildren.has(folder._id)) {
418 await insoservices.requestGroup.remove(folder);
419 }
420 }
421}

Callers 1

syncServiceWorkspaceFunction · 0.85

Calls 6

mapMethod · 0.80
removeMethod · 0.65
removeFunction · 0.50
filterMethod · 0.45
hasMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected