Remove separation between generate queries options
This commit is contained in:
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -509,30 +509,26 @@ 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) =>
|
modelGeneration.parseResults(
|
||||||
modelGeneration.parseResults(
|
queryPath,
|
||||||
queryPath,
|
results,
|
||||||
results,
|
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,
|
progress,
|
||||||
onResults: async (modeledMethods) => {
|
token: tokenSource.token,
|
||||||
this.addModeledMethodsFromArray(modeledMethods);
|
});
|
||||||
},
|
|
||||||
progress,
|
|
||||||
token: tokenSource.token,
|
|
||||||
},
|
|
||||||
);
|
|
||||||
} catch (e: unknown) {
|
} catch (e: unknown) {
|
||||||
void showAndLogExceptionWithTelemetry(
|
void showAndLogExceptionWithTelemetry(
|
||||||
this.app.logger,
|
this.app.logger,
|
||||||
|
|||||||
@@ -122,23 +122,21 @@ 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) =>
|
modelGeneration.parseResults(
|
||||||
modelGeneration.parseResults(
|
queryPath,
|
||||||
queryPath,
|
results,
|
||||||
results,
|
modelsAsDataLanguage,
|
||||||
modelsAsDataLanguage,
|
createMockLogger(),
|
||||||
createMockLogger(),
|
),
|
||||||
),
|
onResults,
|
||||||
},
|
...options,
|
||||||
options,
|
});
|
||||||
);
|
|
||||||
expect(onResults).toHaveBeenCalledWith([
|
expect(onResults).toHaveBeenCalledWith([
|
||||||
{
|
{
|
||||||
input: "Argument[self]",
|
input: "Argument[self]",
|
||||||
|
|||||||
Reference in New Issue
Block a user