UNPKG

typeorm-explain

Version:

Tiny helper to wrap TypeORM's query builder queries to EXPLAIN

28 lines 1.29 kB
import { getConnection } from 'typeorm'; const explains = { postgres(originalQuery, explainParameters = { analyze: true, verbose: true, buffers: true, }, format) { const boolParameters = Object.entries(explainParameters) .filter((argument) => typeof argument[1] === 'boolean') .map(([key, value]) => `${key} ${value}`); const explainParametersString = [...boolParameters, `FORMAT ${format.toUpperCase()}`] .join(', ') .toUpperCase(); return `EXPLAIN (${explainParametersString}) ${originalQuery}`; }, }; export default async function explain(qb, explainParameters, format = 'text', connection = getConnection()) { const { type } = connection.driver.options; const [originalQuery, queryParameters] = qb.getQueryAndParameters(); const explainBuilder = explains[type]; if (!explainBuilder) { const driversList = Object.keys(explains).join(','); throw new Error(`typeorm-explain currently support limited db drivers (${driversList}). Feel free open PR to support your driver: ${type}`); } const query = explainBuilder(originalQuery, explainParameters, format); return connection.query(query, queryParameters); } //# sourceMappingURL=index.js.map