(workspaceId: string)
| 115 | } |
| 116 | |
| 117 | async function loadExistingRequestData(workspaceId: string): Promise<ExistingRequestData> { |
| 118 | // Include requests up to 2 levels deep (workspace → route folders → path×protocol sub-folders). |
| 119 | const topFolders = await db.find<RequestGroup>(models.requestGroup.type, { parentId: workspaceId }); |
| 120 | const subFolders = |
| 121 | topFolders.length > 0 |
| 122 | ? await db.find<RequestGroup>(models.requestGroup.type, { parentId: { $in: topFolders.map(f => f._id) } }) |
| 123 | : []; |
| 124 | const allFolders = [...topFolders, ...subFolders]; |
| 125 | const parentIds = [workspaceId, ...allFolders.map(f => f._id)]; |
| 126 | const query = { parentId: { $in: parentIds }, konnectRouteKey: { $ne: null } }; |
| 127 | const httpDocs = (await db.find<Request>(models.request.type, query)).filter(r => r.konnectRouteKey != null); |
| 128 | const wsDocs = (await db.find<WebSocketRequest>(models.webSocketRequest.type, query)).filter( |
| 129 | r => r.konnectRouteKey != null, |
| 130 | ); |
| 131 | const grpcDocs = (await db.find<GrpcRequest>(models.grpcRequest.type, query)).filter(r => r.konnectRouteKey != null); |
| 132 | return { |
| 133 | maps: { |
| 134 | http: new Map(httpDocs.map(r => [r.konnectRouteKey!, r])), |
| 135 | ws: new Map(wsDocs.map(r => [r.konnectRouteKey!, r])), |
| 136 | grpc: new Map(grpcDocs.map(r => [r.konnectRouteKey!, r])), |
| 137 | }, |
| 138 | parentIds, |
| 139 | folders: allFolders, |
| 140 | }; |
| 141 | } |
| 142 | |
| 143 | async function syncGrpcRoute( |
| 144 | route: KonnectRoute, |
no test coverage detected