Merge pull request #2905 from github/koesie10/convert-modeled-method-fs
Convert `modeled-method-fs.ts` to handle multiple models per method
This commit is contained in:
@@ -47,6 +47,10 @@ import { AutoModeler } from "./auto-modeler";
|
||||
import { telemetryListener } from "../common/vscode/telemetry";
|
||||
import { ModelingStore } from "./modeling-store";
|
||||
import { ModelEditorViewTracker } from "./model-editor-view-tracker";
|
||||
import {
|
||||
convertFromLegacyModeledMethods,
|
||||
convertToLegacyModeledMethods,
|
||||
} from "./modeled-methods-legacy";
|
||||
|
||||
export class ModelEditorView extends AbstractWebview<
|
||||
ToModelEditorMessage,
|
||||
@@ -212,7 +216,7 @@ export class ModelEditorView extends AbstractWebview<
|
||||
this.extensionPack,
|
||||
this.databaseItem.language,
|
||||
msg.methods,
|
||||
msg.modeledMethods,
|
||||
convertFromLegacyModeledMethods(msg.modeledMethods),
|
||||
this.mode,
|
||||
this.cliServer,
|
||||
this.app.logger,
|
||||
@@ -359,7 +363,10 @@ export class ModelEditorView extends AbstractWebview<
|
||||
this.cliServer,
|
||||
this.app.logger,
|
||||
);
|
||||
this.modelingStore.setModeledMethods(this.databaseItem, modeledMethods);
|
||||
this.modelingStore.setModeledMethods(
|
||||
this.databaseItem,
|
||||
convertToLegacyModeledMethods(modeledMethods),
|
||||
);
|
||||
} catch (e: unknown) {
|
||||
void showAndLogErrorMessage(
|
||||
this.app.logger,
|
||||
|
||||
@@ -10,17 +10,12 @@ import { getOnDiskWorkspaceFolders } from "../common/vscode/workspace-folders";
|
||||
import { load as loadYaml } from "js-yaml";
|
||||
import { CodeQLCliServer } from "../codeql-cli/cli";
|
||||
import { pathsEqual } from "../common/files";
|
||||
import {
|
||||
convertFromLegacyModeledMethods,
|
||||
convertFromLegacyModeledMethodsFiles,
|
||||
convertToLegacyModeledMethods,
|
||||
} from "./modeled-methods-legacy";
|
||||
|
||||
export async function saveModeledMethods(
|
||||
extensionPack: ExtensionPack,
|
||||
language: string,
|
||||
methods: Method[],
|
||||
modeledMethods: Record<string, ModeledMethod>,
|
||||
modeledMethods: Record<string, ModeledMethod[]>,
|
||||
mode: Mode,
|
||||
cliServer: CodeQLCliServer,
|
||||
logger: NotificationLogger,
|
||||
@@ -34,8 +29,8 @@ export async function saveModeledMethods(
|
||||
const yamls = createDataExtensionYamls(
|
||||
language,
|
||||
methods,
|
||||
convertFromLegacyModeledMethods(modeledMethods),
|
||||
convertFromLegacyModeledMethodsFiles(existingModeledMethods),
|
||||
modeledMethods,
|
||||
existingModeledMethods,
|
||||
mode,
|
||||
);
|
||||
|
||||
@@ -50,12 +45,12 @@ async function loadModeledMethodFiles(
|
||||
extensionPack: ExtensionPack,
|
||||
cliServer: CodeQLCliServer,
|
||||
logger: NotificationLogger,
|
||||
): Promise<Record<string, Record<string, ModeledMethod>>> {
|
||||
): Promise<Record<string, Record<string, ModeledMethod[]>>> {
|
||||
const modelFiles = await listModelFiles(extensionPack.path, cliServer);
|
||||
|
||||
const modeledMethodsByFile: Record<
|
||||
string,
|
||||
Record<string, ModeledMethod>
|
||||
Record<string, ModeledMethod[]>
|
||||
> = {};
|
||||
|
||||
for (const modelFile of modelFiles) {
|
||||
@@ -73,8 +68,7 @@ async function loadModeledMethodFiles(
|
||||
);
|
||||
continue;
|
||||
}
|
||||
modeledMethodsByFile[modelFile] =
|
||||
convertToLegacyModeledMethods(modeledMethods);
|
||||
modeledMethodsByFile[modelFile] = modeledMethods;
|
||||
}
|
||||
|
||||
return modeledMethodsByFile;
|
||||
@@ -84,8 +78,8 @@ export async function loadModeledMethods(
|
||||
extensionPack: ExtensionPack,
|
||||
cliServer: CodeQLCliServer,
|
||||
logger: NotificationLogger,
|
||||
): Promise<Record<string, ModeledMethod>> {
|
||||
const existingModeledMethods: Record<string, ModeledMethod> = {};
|
||||
): Promise<Record<string, ModeledMethod[]>> {
|
||||
const existingModeledMethods: Record<string, ModeledMethod[]> = {};
|
||||
|
||||
const modeledMethodsByFile = await loadModeledMethodFiles(
|
||||
extensionPack,
|
||||
@@ -94,7 +88,11 @@ export async function loadModeledMethods(
|
||||
);
|
||||
for (const modeledMethods of Object.values(modeledMethodsByFile)) {
|
||||
for (const [key, value] of Object.entries(modeledMethods)) {
|
||||
existingModeledMethods[key] = value;
|
||||
if (!(key in existingModeledMethods)) {
|
||||
existingModeledMethods[key] = [];
|
||||
}
|
||||
|
||||
existingModeledMethods[key].push(...value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -21,13 +21,3 @@ export function convertToLegacyModeledMethods(
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
export function convertFromLegacyModeledMethodsFiles(
|
||||
modeledMethods: Record<string, Record<string, ModeledMethod>>,
|
||||
): Record<string, Record<string, ModeledMethod[]>> {
|
||||
return Object.fromEntries(
|
||||
Object.entries(modeledMethods).map(([filename, modeledMethods]) => {
|
||||
return [filename, convertFromLegacyModeledMethods(modeledMethods)];
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user