UNPKG

mongoose-query-logger

Version:

![CI](https://github.com/marcosfede/mongoose-query-logger/workflows/CI/badge.svg) ![npm version](https://badgen.net/npm/v/mongoose-query-logger) ![types](https://badgen.net/npm/types/mongoose-query-logger) ![license](https://badgen.net/npm/license/mongoos

37 lines (28 loc) 856 B
import { QueryPlanner } from './types'; import { omit, findPropRecursively } from './utils'; export function getWinningPlan(queryPlanner: any) { if (!queryPlanner || !queryPlanner.winningPlan) { console.error('no queryPlanner'); return null; } const winningPlan = queryPlanner.winningPlan; const stages = []; let currentStage = winningPlan; stages.push(omit(currentStage, ['inputStage'])); while (currentStage.inputStage !== undefined) { currentStage = currentStage.inputStage; stages.push(omit(currentStage, ['inputStage'])); } stages.reverse(); return stages; } export function findQueryPlanners(stages: QueryPlanner[]) { const planners = []; stages.forEach(stage => { const plan = findPropRecursively(stage, 'queryPlanner'); if (plan) { planners.push(plan); } }); return planners; }