diff --git a/src/reporters/github/github.test.ts b/src/reporters/github/github.test.ts index aa3ffab..c676fd3 100644 --- a/src/reporters/github/github.test.ts +++ b/src/reporters/github/github.test.ts @@ -147,7 +147,8 @@ describe("buildViewModel", () => { hash: "new-query-1", query: "SELECT 1", formattedQuery: "SELECT 1", - nudges: [], tags: [], optimization: { state: "no_improvement_found", cost: 10, indexesUsed: [] }, + nudges: [], tags: [], tableReferences: [], + optimization: { state: "no_improvement_found", cost: 10, indexesUsed: [] }, }, ], }), @@ -236,13 +237,15 @@ describe("buildViewModel", () => { hash: "new-1", query: "SELECT 1", formattedQuery: "SELECT 1", - nudges: [], tags: [], optimization: { state: "no_improvement_found", cost: 10, indexesUsed: [] }, + nudges: [], tags: [], tableReferences: [], + optimization: { state: "no_improvement_found", cost: 10, indexesUsed: [] }, }, { hash: "new-2", query: "SELECT 2", formattedQuery: "SELECT 2", - nudges: [], tags: [], optimization: { state: "no_improvement_found", cost: 10, indexesUsed: [] }, + nudges: [], tags: [], tableReferences: [], + optimization: { state: "no_improvement_found", cost: 10, indexesUsed: [] }, }, ], }), @@ -269,7 +272,8 @@ describe("buildViewModel", () => { hash: "new-1", query: "SELECT 1", formattedQuery: "SELECT 1", - nudges: [], tags: [], optimization: { state: "no_improvement_found", cost: 10, indexesUsed: [] }, + nudges: [], tags: [], tableReferences: [], + optimization: { state: "no_improvement_found", cost: 10, indexesUsed: [] }, }, ], }), diff --git a/src/reporters/site-api.ts b/src/reporters/site-api.ts index 599f22e..7ac4bb3 100644 --- a/src/reporters/site-api.ts +++ b/src/reporters/site-api.ts @@ -1,5 +1,5 @@ import * as github from "@actions/github"; -import type { IndexRecommendation, Nudge, SQLCommenterTag } from "@query-doctor/core"; +import type { IndexRecommendation, Nudge, SQLCommenterTag, TableReference } from "@query-doctor/core"; import { DEFAULT_CONFIG, type AnalyzerConfig } from "../config.ts"; import type { QueryProcessResult } from "../runner.ts"; @@ -20,6 +20,7 @@ export interface CiQueryPayload { optimization: CiOptimization; nudges: Nudge[]; tags: SQLCommenterTag[]; + tableReferences: TableReference[]; } export type CiOptimization = @@ -122,6 +123,7 @@ function mapResultToQuery(result: QueryProcessResult): CiQueryPayload | null { formattedQuery: result.recommendation.formattedQuery, nudges: result.nudges, tags: result.tags, + tableReferences: result.referencedTables ?? [], optimization: { state: "improvements_available", cost: result.recommendation.baseCost, @@ -146,6 +148,7 @@ function mapResultToQuery(result: QueryProcessResult): CiQueryPayload | null { formattedQuery: result.formattedQuery, nudges: result.nudges, tags: result.tags, + tableReferences: result.referencedTables ?? [], optimization: { state: "no_improvement_found", cost: result.cost, @@ -161,6 +164,7 @@ function mapResultToQuery(result: QueryProcessResult): CiQueryPayload | null { formattedQuery: result.formattedQuery, nudges: result.nudges, tags: result.tags, + tableReferences: result.referencedTables ?? [], optimization: { state: "no_improvement_found", cost: 0, @@ -176,6 +180,7 @@ function mapResultToQuery(result: QueryProcessResult): CiQueryPayload | null { formattedQuery: result.formattedQuery, nudges: result.nudges, tags: result.tags, + tableReferences: result.referencedTables ?? [], optimization: { state: "error", error: result.error.message, @@ -189,6 +194,7 @@ function mapResultToQuery(result: QueryProcessResult): CiQueryPayload | null { formattedQuery: result.warning.formattedQuery, nudges: result.nudges, tags: result.tags, + tableReferences: result.referencedTables ?? [], optimization: result.warning.optimization ? { state: "no_improvement_found", diff --git a/src/runner.ts b/src/runner.ts index c8e3898..111c31c 100644 --- a/src/runner.ts +++ b/src/runner.ts @@ -15,6 +15,7 @@ import { type IndexRecommendation, type Nudge, type SQLCommenterTag, + type TableReference, OptimizeResult, type Postgres, PostgresQueryBuilder, @@ -272,6 +273,7 @@ export class Runner { rawQuery: query, nudges, tags, + referencedTables, warning: { fingerprint: queryFingerprint, formattedQuery, @@ -309,6 +311,7 @@ export class Runner { formattedQuery, nudges, tags, + referencedTables, }; } if (out.kind === "ok") { @@ -342,6 +345,7 @@ export class Runner { existingIndexes: existingIndexesForQuery, nudges, tags, + referencedTables, explainPlan: out.baseExplainPlan, }; } @@ -356,6 +360,7 @@ export class Runner { rawQuery: query, nudges, tags, + referencedTables, indexRecommendations: newIndexRecommendations, recommendation: { fingerprint: queryFingerprint, @@ -384,6 +389,7 @@ export class Runner { rawQuery: query, nudges, tags, + referencedTables, warning: { fingerprint: queryFingerprint, formattedQuery, @@ -407,6 +413,7 @@ export class Runner { existingIndexes: existingIndexesForQuery, nudges, tags, + referencedTables, explainPlan: out.baseExplainPlan, }; } @@ -422,6 +429,7 @@ export class Runner { formattedQuery, nudges, tags, + referencedTables, }; } console.timeEnd(`timing`); @@ -477,6 +485,7 @@ export type QueryProcessResult = rawQuery: string; nudges: Nudge[]; tags: SQLCommenterTag[]; + referencedTables: TableReference[]; warning: ReportQueryCostWarning; } | { @@ -484,6 +493,7 @@ export type QueryProcessResult = rawQuery: string; nudges: Nudge[]; tags: SQLCommenterTag[]; + referencedTables: TableReference[]; indexRecommendations: IndexRecommendation[]; recommendation: ReportIndexRecommendation; } @@ -496,6 +506,7 @@ export type QueryProcessResult = existingIndexes: string[]; nudges: Nudge[]; tags: SQLCommenterTag[]; + referencedTables: TableReference[]; explainPlan?: object; } | { kind: "error"; @@ -505,6 +516,7 @@ export type QueryProcessResult = formattedQuery: string; nudges: Nudge[]; tags: SQLCommenterTag[]; + referencedTables: TableReference[]; } | { kind: "zero_cost_plan"; @@ -514,4 +526,5 @@ export type QueryProcessResult = formattedQuery: string; nudges: Nudge[]; tags: SQLCommenterTag[]; + referencedTables: TableReference[]; };