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

View File

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

View File

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