Cache BQRS schemas in compare view

This commit is contained in:
Koen Vlaswinkel
2023-12-05 10:26:24 +01:00
parent b6ba0bbcb9
commit 331d39afcf
2 changed files with 24 additions and 25 deletions

View File

@@ -30,7 +30,9 @@ import { findResultSetNames } from "./result-set-names";
interface ComparePair { interface ComparePair {
from: CompletedLocalQueryInfo; from: CompletedLocalQueryInfo;
fromSchemas: BQRSInfo;
to: CompletedLocalQueryInfo; to: CompletedLocalQueryInfo;
toSchemas: BQRSInfo;
} }
export class CompareView extends AbstractWebview< export class CompareView extends AbstractWebview<
@@ -57,7 +59,19 @@ export class CompareView extends AbstractWebview<
to: CompletedLocalQueryInfo, to: CompletedLocalQueryInfo,
selectedResultSetName?: string, selectedResultSetName?: string,
) { ) {
this.comparePair = { from, to }; const fromSchemas = await this.cliServer.bqrsInfo(
from.completedQuery.query.resultsPaths.resultsPath,
);
const toSchemas = await this.cliServer.bqrsInfo(
to.completedQuery.query.resultsPaths.resultsPath,
);
this.comparePair = {
from,
fromSchemas,
to,
toSchemas,
};
await this.showResultsInternal(selectedResultSetName); await this.showResultsInternal(selectedResultSetName);
} }
@@ -78,7 +92,10 @@ export class CompareView extends AbstractWebview<
currentResultSetName, currentResultSetName,
fromResultSet, fromResultSet,
toResultSet, toResultSet,
] = await this.findCommonResultSetNames(from, to, selectedResultSetName); ] = await this.findCommonResultSetNames(
this.comparePair,
selectedResultSetName,
);
if (currentResultSetName) { if (currentResultSetName) {
let rows: QueryCompareResult | undefined; let rows: QueryCompareResult | undefined;
let message: string | undefined; let message: string | undefined;
@@ -178,23 +195,15 @@ export class CompareView extends AbstractWebview<
} }
private async findCommonResultSetNames( private async findCommonResultSetNames(
from: CompletedLocalQueryInfo, { from, fromSchemas, to, toSchemas }: ComparePair,
to: CompletedLocalQueryInfo,
selectedResultSetName: string | undefined, selectedResultSetName: string | undefined,
): Promise<[string[], string, RawResultSet, RawResultSet]> { ): Promise<[string[], string, RawResultSet, RawResultSet]> {
const { const {
commonResultSetNames, commonResultSetNames,
currentResultSetDisplayName, currentResultSetDisplayName,
fromSchemas,
fromResultSetName, fromResultSetName,
toSchemas,
toResultSetName, toResultSetName,
} = await findResultSetNames( } = await findResultSetNames(fromSchemas, toSchemas, selectedResultSetName);
this.cliServer,
from,
to,
selectedResultSetName,
);
const fromResultSet = await this.getResultSet( const fromResultSet = await this.getResultSet(
fromSchemas, fromSchemas,

View File

@@ -1,18 +1,10 @@
import { CompletedLocalQueryInfo } from "../query-results"; import { BQRSInfo } from "../common/bqrs-cli-types";
import { CodeQLCliServer } from "../codeql-cli/cli";
export async function findResultSetNames( export async function findResultSetNames(
cliServer: CodeQLCliServer, fromSchemas: BQRSInfo,
from: CompletedLocalQueryInfo, toSchemas: BQRSInfo,
to: CompletedLocalQueryInfo,
selectedResultSetName: string | undefined, selectedResultSetName: string | undefined,
) { ) {
const fromSchemas = await cliServer.bqrsInfo(
from.completedQuery.query.resultsPaths.resultsPath,
);
const toSchemas = await cliServer.bqrsInfo(
to.completedQuery.query.resultsPaths.resultsPath,
);
const fromSchemaNames = fromSchemas["result-sets"].map( const fromSchemaNames = fromSchemas["result-sets"].map(
(schema) => schema.name, (schema) => schema.name,
); );
@@ -47,9 +39,7 @@ export async function findResultSetNames(
currentResultSetDisplayName: currentResultSetDisplayName:
currentResultSetName || currentResultSetName ||
`${defaultFromResultSetName} <-> ${defaultToResultSetName}`, `${defaultFromResultSetName} <-> ${defaultToResultSetName}`,
fromSchemas,
fromResultSetName, fromResultSetName,
toSchemas,
toResultSetName, toResultSetName,
}; };
} }