Remove separation between generate queries options

This commit is contained in:
Koen Vlaswinkel
2023-11-01 14:55:49 +01:00
parent 71f59b19b4
commit 693adb5512
3 changed files with 38 additions and 58 deletions

View File

@@ -9,40 +9,26 @@ import { ModeledMethod } from "./modeled-method";
import { runQuery } from "../local-queries/run-query"; import { runQuery } from "../local-queries/run-query";
import { QueryConstraints, resolveQueries } from "../local-queries"; import { QueryConstraints, resolveQueries } from "../local-queries";
import { DecodedBqrs } from "../common/bqrs-cli-types"; import { DecodedBqrs } from "../common/bqrs-cli-types";
type GenerateQueriesOptions = {
/**
* Options that are set by the caller of `runGenerateQueries`.
*/
type GenerateQueriesQueryOptions = {
queryConstraints: QueryConstraints; queryConstraints: QueryConstraints;
filterQueries?: (queryPath: string) => boolean; filterQueries?: (queryPath: string) => boolean;
parseResults: ( parseResults: (
queryPath: string, queryPath: string,
results: DecodedBqrs, results: DecodedBqrs,
) => ModeledMethod[] | Promise<ModeledMethod[]>; ) => ModeledMethod[] | Promise<ModeledMethod[]>;
}; onResults: (results: ModeledMethod[]) => void | Promise<void>;
/**
* Options that are passed through by the caller of `runGenerateQueries`.
*/
type GenerateQueriesOptions = {
cliServer: CodeQLCliServer; cliServer: CodeQLCliServer;
queryRunner: QueryRunner; queryRunner: QueryRunner;
queryStorageDir: string; queryStorageDir: string;
databaseItem: DatabaseItem; databaseItem: DatabaseItem;
progress: ProgressCallback; progress: ProgressCallback;
token: CancellationToken; token: CancellationToken;
onResults: (results: ModeledMethod[]) => void | Promise<void>;
}; };
export async function runGenerateQueries( export async function runGenerateQueries(options: GenerateQueriesOptions) {
{ const { queryConstraints, filterQueries, parseResults, onResults } = options;
queryConstraints,
filterQueries,
parseResults,
}: GenerateQueriesQueryOptions,
{ onResults, ...options }: GenerateQueriesOptions,
) {
options.progress({ options.progress({
message: "Resolving queries", message: "Resolving queries",
step: 1, step: 1,
@@ -84,7 +70,7 @@ async function runSingleGenerateQuery(
databaseItem, databaseItem,
progress, progress,
token, token,
}: Omit<GenerateQueriesOptions, "onResults">, }: GenerateQueriesOptions,
): Promise<DecodedBqrs | undefined> { ): Promise<DecodedBqrs | undefined> {
const queryBasename = basename(queryPath); const queryBasename = basename(queryPath);

View File

@@ -509,8 +509,7 @@ export class ModelEditorView extends AbstractWebview<
}); });
try { try {
await runGenerateQueries( await runGenerateQueries({
{
queryConstraints: modelGeneration.queryConstraints, queryConstraints: modelGeneration.queryConstraints,
filterQueries: modelGeneration.filterQueries, filterQueries: modelGeneration.filterQueries,
parseResults: (queryPath, results) => parseResults: (queryPath, results) =>
@@ -520,19 +519,16 @@ export class ModelEditorView extends AbstractWebview<
modelsAsDataLanguage, modelsAsDataLanguage,
this.app.logger, this.app.logger,
), ),
onResults: async (modeledMethods) => {
this.addModeledMethodsFromArray(modeledMethods);
}, },
{
cliServer: this.cliServer, cliServer: this.cliServer,
queryRunner: this.queryRunner, queryRunner: this.queryRunner,
queryStorageDir: this.queryStorageDir, queryStorageDir: this.queryStorageDir,
databaseItem: addedDatabase ?? this.databaseItem, databaseItem: addedDatabase ?? this.databaseItem,
onResults: async (modeledMethods) => {
this.addModeledMethodsFromArray(modeledMethods);
},
progress, progress,
token: tokenSource.token, token: tokenSource.token,
}, });
);
} catch (e: unknown) { } catch (e: unknown) {
void showAndLogExceptionWithTelemetry( void showAndLogExceptionWithTelemetry(
this.app.logger, this.app.logger,

View File

@@ -122,11 +122,9 @@ describe("runGenerateQueries", () => {
queryStorageDir: "/tmp/queries", queryStorageDir: "/tmp/queries",
progress: jest.fn(), progress: jest.fn(),
token: new CancellationTokenSource().token, token: new CancellationTokenSource().token,
onResults,
}; };
await runGenerateQueries( await runGenerateQueries({
{
queryConstraints: modelGeneration.queryConstraints, queryConstraints: modelGeneration.queryConstraints,
filterQueries: modelGeneration.filterQueries, filterQueries: modelGeneration.filterQueries,
parseResults: (queryPath, results) => parseResults: (queryPath, results) =>
@@ -136,9 +134,9 @@ describe("runGenerateQueries", () => {
modelsAsDataLanguage, modelsAsDataLanguage,
createMockLogger(), createMockLogger(),
), ),
}, onResults,
options, ...options,
); });
expect(onResults).toHaveBeenCalledWith([ expect(onResults).toHaveBeenCalledWith([
{ {
input: "Argument[self]", input: "Argument[self]",