Skip to content

Commit 08342f1

Browse files
authored
Merge pull request #2905 from github/koesie10/convert-modeled-method-fs
Convert `modeled-method-fs.ts` to handle multiple models per method
2 parents af334a9 + 9c27513 commit 08342f1

File tree

3 files changed

+22
-27
lines changed

3 files changed

+22
-27
lines changed

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

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@ import { AutoModeler } from "./auto-modeler";
4747
import { telemetryListener } from "../common/vscode/telemetry";
4848
import { ModelingStore } from "./modeling-store";
4949
import { ModelEditorViewTracker } from "./model-editor-view-tracker";
50+
import {
51+
convertFromLegacyModeledMethods,
52+
convertToLegacyModeledMethods,
53+
} from "./modeled-methods-legacy";
5054

5155
export class ModelEditorView extends AbstractWebview<
5256
ToModelEditorMessage,
@@ -212,7 +216,7 @@ export class ModelEditorView extends AbstractWebview<
212216
this.extensionPack,
213217
this.databaseItem.language,
214218
msg.methods,
215-
msg.modeledMethods,
219+
convertFromLegacyModeledMethods(msg.modeledMethods),
216220
this.mode,
217221
this.cliServer,
218222
this.app.logger,
@@ -359,7 +363,10 @@ export class ModelEditorView extends AbstractWebview<
359363
this.cliServer,
360364
this.app.logger,
361365
);
362-
this.modelingStore.setModeledMethods(this.databaseItem, modeledMethods);
366+
this.modelingStore.setModeledMethods(
367+
this.databaseItem,
368+
convertToLegacyModeledMethods(modeledMethods),
369+
);
363370
} catch (e: unknown) {
364371
void showAndLogErrorMessage(
365372
this.app.logger,

extensions/ql-vscode/src/model-editor/modeled-method-fs.ts

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,12 @@ import { getOnDiskWorkspaceFolders } from "../common/vscode/workspace-folders";
1010
import { load as loadYaml } from "js-yaml";
1111
import { CodeQLCliServer } from "../codeql-cli/cli";
1212
import { pathsEqual } from "../common/files";
13-
import {
14-
convertFromLegacyModeledMethods,
15-
convertFromLegacyModeledMethodsFiles,
16-
convertToLegacyModeledMethods,
17-
} from "./modeled-methods-legacy";
1813

1914
export async function saveModeledMethods(
2015
extensionPack: ExtensionPack,
2116
language: string,
2217
methods: Method[],
23-
modeledMethods: Record<string, ModeledMethod>,
18+
modeledMethods: Record<string, ModeledMethod[]>,
2419
mode: Mode,
2520
cliServer: CodeQLCliServer,
2621
logger: NotificationLogger,
@@ -34,8 +29,8 @@ export async function saveModeledMethods(
3429
const yamls = createDataExtensionYamls(
3530
language,
3631
methods,
37-
convertFromLegacyModeledMethods(modeledMethods),
38-
convertFromLegacyModeledMethodsFiles(existingModeledMethods),
32+
modeledMethods,
33+
existingModeledMethods,
3934
mode,
4035
);
4136

@@ -50,12 +45,12 @@ async function loadModeledMethodFiles(
5045
extensionPack: ExtensionPack,
5146
cliServer: CodeQLCliServer,
5247
logger: NotificationLogger,
53-
): Promise<Record<string, Record<string, ModeledMethod>>> {
48+
): Promise<Record<string, Record<string, ModeledMethod[]>>> {
5449
const modelFiles = await listModelFiles(extensionPack.path, cliServer);
5550

5651
const modeledMethodsByFile: Record<
5752
string,
58-
Record<string, ModeledMethod>
53+
Record<string, ModeledMethod[]>
5954
> = {};
6055

6156
for (const modelFile of modelFiles) {
@@ -73,8 +68,7 @@ async function loadModeledMethodFiles(
7368
);
7469
continue;
7570
}
76-
modeledMethodsByFile[modelFile] =
77-
convertToLegacyModeledMethods(modeledMethods);
71+
modeledMethodsByFile[modelFile] = modeledMethods;
7872
}
7973

8074
return modeledMethodsByFile;
@@ -84,8 +78,8 @@ export async function loadModeledMethods(
8478
extensionPack: ExtensionPack,
8579
cliServer: CodeQLCliServer,
8680
logger: NotificationLogger,
87-
): Promise<Record<string, ModeledMethod>> {
88-
const existingModeledMethods: Record<string, ModeledMethod> = {};
81+
): Promise<Record<string, ModeledMethod[]>> {
82+
const existingModeledMethods: Record<string, ModeledMethod[]> = {};
8983

9084
const modeledMethodsByFile = await loadModeledMethodFiles(
9185
extensionPack,
@@ -94,7 +88,11 @@ export async function loadModeledMethods(
9488
);
9589
for (const modeledMethods of Object.values(modeledMethodsByFile)) {
9690
for (const [key, value] of Object.entries(modeledMethods)) {
97-
existingModeledMethods[key] = value;
91+
if (!(key in existingModeledMethods)) {
92+
existingModeledMethods[key] = [];
93+
}
94+
95+
existingModeledMethods[key].push(...value);
9896
}
9997
}
10098

extensions/ql-vscode/src/model-editor/modeled-methods-legacy.ts

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,3 @@ export function convertToLegacyModeledMethods(
2121
}),
2222
);
2323
}
24-
25-
export function convertFromLegacyModeledMethodsFiles(
26-
modeledMethods: Record<string, Record<string, ModeledMethod>>,
27-
): Record<string, Record<string, ModeledMethod[]>> {
28-
return Object.fromEntries(
29-
Object.entries(modeledMethods).map(([filename, modeledMethods]) => {
30-
return [filename, convertFromLegacyModeledMethods(modeledMethods)];
31-
}),
32-
);
33-
}

0 commit comments

Comments
 (0)