Skip to content

Commit 9d40d9a

Browse files
Remove method and modeledMethods from SaveModeledMethods message
1 parent 1806108 commit 9d40d9a

File tree

6 files changed

+98
-64
lines changed

6 files changed

+98
-64
lines changed

extensions/ql-vscode/src/common/interface-types.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -543,8 +543,7 @@ interface RefreshMethods {
543543

544544
interface SaveModeledMethods {
545545
t: "saveModeledMethods";
546-
methods: Method[];
547-
modeledMethods: Record<string, ModeledMethod>;
546+
methodSignatures?: string[];
548547
}
549548

550549
interface GenerateMethodMessage {

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

Lines changed: 50 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -228,47 +228,58 @@ export class ModelEditorView extends AbstractWebview<
228228

229229
break;
230230
case "saveModeledMethods":
231-
await withProgress(
232-
async (progress) => {
233-
progress({
234-
step: 1,
235-
maxStep: 500 + externalApiQueriesProgressMaxStep,
236-
message: "Writing model files",
237-
});
238-
await saveModeledMethods(
239-
this.extensionPack,
240-
this.databaseItem.language,
241-
msg.methods,
242-
msg.modeledMethods,
243-
this.mode,
244-
this.cliServer,
245-
this.app.logger,
246-
);
247-
248-
await Promise.all([
249-
this.setViewState(),
250-
this.loadMethods((update) =>
251-
progress({
252-
...update,
253-
step: update.step + 500,
254-
maxStep: 500 + externalApiQueriesProgressMaxStep,
255-
}),
256-
),
257-
]);
258-
},
259-
{
260-
cancellable: false,
261-
},
262-
);
231+
{
232+
const methods = this.modelingStore.getMethods(
233+
this.databaseItem,
234+
msg.methodSignatures,
235+
);
236+
const modeledMethods = this.modelingStore.getModeledMethods(
237+
this.databaseItem,
238+
msg.methodSignatures,
239+
);
263240

264-
this.modelingStore.removeModifiedMethods(
265-
this.databaseItem,
266-
Object.keys(msg.modeledMethods),
267-
);
241+
await withProgress(
242+
async (progress) => {
243+
progress({
244+
step: 1,
245+
maxStep: 500 + externalApiQueriesProgressMaxStep,
246+
message: "Writing model files",
247+
});
248+
await saveModeledMethods(
249+
this.extensionPack,
250+
this.databaseItem.language,
251+
methods,
252+
modeledMethods,
253+
this.mode,
254+
this.cliServer,
255+
this.app.logger,
256+
);
257+
258+
await Promise.all([
259+
this.setViewState(),
260+
this.loadMethods((update) =>
261+
progress({
262+
...update,
263+
step: update.step + 500,
264+
maxStep: 500 + externalApiQueriesProgressMaxStep,
265+
}),
266+
),
267+
]);
268+
},
269+
{
270+
cancellable: false,
271+
},
272+
);
268273

269-
void telemetryListener?.sendUIInteraction(
270-
"model-editor-save-modeled-methods",
271-
);
274+
this.modelingStore.removeModifiedMethods(
275+
this.databaseItem,
276+
Object.keys(modeledMethods),
277+
);
278+
279+
void telemetryListener?.sendUIInteraction(
280+
"model-editor-save-modeled-methods",
281+
);
282+
}
272283

273284
break;
274285
case "generateMethod":

extensions/ql-vscode/src/model-editor/modeling-store.ts

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,23 @@ export class ModelingStore extends DisposableObject {
154154
return this.state.get(this.activeDb);
155155
}
156156

157+
/**
158+
* Returns the methods for the given database item and method signatures.
159+
* If no method signatures are provided, returns all methods.
160+
*/
161+
public getMethods(
162+
dbItem: DatabaseItem,
163+
methodSignatures?: string[],
164+
): Method[] {
165+
const methods = this.getState(dbItem).methods;
166+
if (!methodSignatures) {
167+
return methods;
168+
}
169+
return methods.filter((method) =>
170+
methodSignatures.includes(method.signature),
171+
);
172+
}
173+
157174
public setMethods(dbItem: DatabaseItem, methods: Method[]) {
158175
const dbState = this.getState(dbItem);
159176
const dbUri = dbItem.databaseUri.toString();
@@ -182,6 +199,25 @@ export class ModelingStore extends DisposableObject {
182199
});
183200
}
184201

202+
/**
203+
* Returns the modeled methods for the given database item and method signatures.
204+
* If no method signatures are provided, returns all modeled methods.
205+
*/
206+
public getModeledMethods(
207+
dbItem: DatabaseItem,
208+
methodSignatures?: string[],
209+
): Record<string, ModeledMethod> {
210+
const modeledMethods = this.getState(dbItem).modeledMethods;
211+
if (!methodSignatures) {
212+
return modeledMethods;
213+
}
214+
return Object.fromEntries(
215+
Object.entries(modeledMethods).filter(([key]) =>
216+
methodSignatures.includes(key),
217+
),
218+
);
219+
}
220+
185221
public addModeledMethods(
186222
dbItem: DatabaseItem,
187223
methods: Record<string, ModeledMethod>,

extensions/ql-vscode/src/view/model-editor/LibraryRow.tsx

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,7 @@ export type LibraryRowProps = {
7878
hideModeledMethods: boolean;
7979
revealedMethodSignature: string | null;
8080
onChange: (modeledMethod: ModeledMethod) => void;
81-
onSaveModelClick: (
82-
methods: Method[],
83-
modeledMethods: Record<string, ModeledMethod>,
84-
) => void;
81+
onSaveModelClick: (methodSignatures: string[]) => void;
8582
onGenerateFromLlmClick: (
8683
dependencyName: string,
8784
methods: Method[],
@@ -165,11 +162,11 @@ export const LibraryRow = ({
165162

166163
const handleSave = useCallback(
167164
async (e: React.MouseEvent) => {
168-
onSaveModelClick(methods, modeledMethods);
165+
onSaveModelClick(methods.map((m) => m.signature));
169166
e.stopPropagation();
170167
e.preventDefault();
171168
},
172-
[methods, modeledMethods, onSaveModelClick],
169+
[methods, onSaveModelClick],
173170
);
174171

175172
const hasUnsavedChanges = useMemo(() => {

extensions/ql-vscode/src/view/model-editor/ModelEditor.tsx

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -196,21 +196,15 @@ export function ModelEditor({
196196
const onSaveAllClick = useCallback(() => {
197197
vscode.postMessage({
198198
t: "saveModeledMethods",
199-
methods,
200-
modeledMethods,
201199
});
202-
}, [methods, modeledMethods]);
200+
}, []);
203201

204-
const onSaveModelClick = useCallback(
205-
(methods: Method[], modeledMethods: Record<string, ModeledMethod>) => {
206-
vscode.postMessage({
207-
t: "saveModeledMethods",
208-
methods,
209-
modeledMethods,
210-
});
211-
},
212-
[],
213-
);
202+
const onSaveModelClick = useCallback((methodSignatures: string[]) => {
203+
vscode.postMessage({
204+
t: "saveModeledMethods",
205+
methodSignatures,
206+
});
207+
}, []);
214208

215209
const onGenerateFromSourceClick = useCallback(() => {
216210
vscode.postMessage({

extensions/ql-vscode/src/view/model-editor/ModeledMethodsList.tsx

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,7 @@ export type ModeledMethodsListProps = {
2020
viewState: ModelEditorViewState;
2121
hideModeledMethods: boolean;
2222
onChange: (modeledMethod: ModeledMethod) => void;
23-
onSaveModelClick: (
24-
methods: Method[],
25-
modeledMethods: Record<string, ModeledMethod>,
26-
) => void;
23+
onSaveModelClick: (methodSignatures: string[]) => void;
2724
onGenerateFromLlmClick: (
2825
packageName: string,
2926
methods: Method[],

0 commit comments

Comments
 (0)