Skip to content

Commit b6f32ec

Browse files
committed
Remove import cycle for model editor queries
1 parent 70c2beb commit b6f32ec

File tree

2 files changed

+55
-55
lines changed

2 files changed

+55
-55
lines changed

extensions/ql-vscode/src/model-editor/model-editor-queries-setup.ts

Lines changed: 5 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@ import { join } from "path";
22
import type { QueryLanguage } from "../common/query-language";
33
import { writeFile } from "fs-extra";
44
import { dump } from "js-yaml";
5-
import { prepareModelEditorQueries } from "./model-editor-queries";
5+
import {
6+
prepareModelEditorQueries,
7+
resolveEndpointsQuery,
8+
syntheticQueryPackName,
9+
} from "./model-editor-queries";
610
import type { CodeQLCliServer } from "../codeql-cli/cli";
711
import type { ModelConfig } from "../config";
812
import { Mode } from "./shared/mode";
9-
import { resolveQueriesFromPacks } from "../local-queries";
10-
import { modeTag } from "./mode-tag";
1113
import type { NotificationLogger } from "../common/logging";
1214

13-
export const syntheticQueryPackName = "codeql/model-editor-queries";
14-
1515
/**
1616
* setUpPack sets up a directory to use for the data extension editor queries if required.
1717
*
@@ -96,49 +96,3 @@ export async function setUpPack(
9696

9797
return true;
9898
}
99-
100-
/**
101-
* Resolve the query path to the model editor endpoints query. All queries are tagged like this:
102-
* modeleditor endpoints <mode>
103-
* Example: modeleditor endpoints framework-mode
104-
*
105-
* @param cliServer The CodeQL CLI server to use.
106-
* @param language The language of the query pack to use.
107-
* @param mode The mode to resolve the query for.
108-
* @param additionalPackNames Additional pack names to search.
109-
* @param additionalPackPaths Additional pack paths to search.
110-
*/
111-
export async function resolveEndpointsQuery(
112-
cliServer: CodeQLCliServer,
113-
language: string,
114-
mode: Mode,
115-
additionalPackNames: string[] = [],
116-
additionalPackPaths: string[] = [],
117-
): Promise<string | undefined> {
118-
const packsToSearch = [`codeql/${language}-queries`, ...additionalPackNames];
119-
120-
// First, resolve the query that we want to run.
121-
// All queries are tagged like this:
122-
// internal extract automodel <mode> <queryTag>
123-
// Example: internal extract automodel framework-mode candidates
124-
const queries = await resolveQueriesFromPacks(
125-
cliServer,
126-
packsToSearch,
127-
{
128-
kind: "table",
129-
"tags contain all": ["modeleditor", "endpoints", modeTag(mode)],
130-
},
131-
additionalPackPaths,
132-
);
133-
if (queries.length > 1) {
134-
throw new Error(
135-
`Found multiple endpoints queries for ${mode}. Can't continue`,
136-
);
137-
}
138-
139-
if (queries.length === 0) {
140-
return undefined;
141-
}
142-
143-
return queries[0];
144-
}

extensions/ql-vscode/src/model-editor/model-editor-queries.ts

Lines changed: 50 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ import { fetchExternalApiQueries } from "./queries";
1717
import type { Method } from "./method";
1818
import { runQuery } from "../local-queries/run-query";
1919
import { decodeBqrsToMethods } from "./bqrs";
20-
import {
21-
resolveEndpointsQuery,
22-
syntheticQueryPackName,
23-
} from "./model-editor-queries-setup";
20+
import { resolveQueriesFromPacks } from "../local-queries";
21+
import { modeTag } from "./mode-tag";
22+
23+
export const syntheticQueryPackName = "codeql/model-editor-queries";
2424

2525
type RunQueryOptions = {
2626
cliServer: CodeQLCliServer;
@@ -223,6 +223,52 @@ export async function readQueryResults({
223223
return cliServer.bqrsDecode(bqrsPath, resultSet.name);
224224
}
225225

226+
/**
227+
* Resolve the query path to the model editor endpoints query. All queries are tagged like this:
228+
* modeleditor endpoints <mode>
229+
* Example: modeleditor endpoints framework-mode
230+
*
231+
* @param cliServer The CodeQL CLI server to use.
232+
* @param language The language of the query pack to use.
233+
* @param mode The mode to resolve the query for.
234+
* @param additionalPackNames Additional pack names to search.
235+
* @param additionalPackPaths Additional pack paths to search.
236+
*/
237+
export async function resolveEndpointsQuery(
238+
cliServer: CodeQLCliServer,
239+
language: string,
240+
mode: Mode,
241+
additionalPackNames: string[] = [],
242+
additionalPackPaths: string[] = [],
243+
): Promise<string | undefined> {
244+
const packsToSearch = [`codeql/${language}-queries`, ...additionalPackNames];
245+
246+
// First, resolve the query that we want to run.
247+
// All queries are tagged like this:
248+
// internal extract automodel <mode> <queryTag>
249+
// Example: internal extract automodel framework-mode candidates
250+
const queries = await resolveQueriesFromPacks(
251+
cliServer,
252+
packsToSearch,
253+
{
254+
kind: "table",
255+
"tags contain all": ["modeleditor", "endpoints", modeTag(mode)],
256+
},
257+
additionalPackPaths,
258+
);
259+
if (queries.length > 1) {
260+
throw new Error(
261+
`Found multiple endpoints queries for ${mode}. Can't continue`,
262+
);
263+
}
264+
265+
if (queries.length === 0) {
266+
return undefined;
267+
}
268+
269+
return queries[0];
270+
}
271+
226272
function queryNameFromMode(mode: Mode): string {
227273
return `${mode.charAt(0).toUpperCase() + mode.slice(1)}ModeEndpoints.ql`;
228274
}

0 commit comments

Comments
 (0)