Skip to content

Commit e603de4

Browse files
committed
Convert local database commands to typed commands
1 parent dbd832f commit e603de4

3 files changed

Lines changed: 58 additions & 110 deletions

File tree

extensions/ql-vscode/src/common/commands.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import type { CommandManager } from "../packages/commands";
22
import type { Uri } from "vscode";
3+
import type { DatabaseItem } from "../local-databases";
34
import type { QueryHistoryInfo } from "../query-history/query-history-info";
45

56
// A command function matching the signature that VS Code calls when
@@ -53,6 +54,31 @@ export type QueryHistoryCommands = {
5354
"codeQLQueryHistory.copyRepoList": SelectionCommandFunction<QueryHistoryInfo>;
5455
};
5556

57+
// Commands used for the local databases panel
58+
export type LocalDatabasesCommands = {
59+
"codeQL.setCurrentDatabase": (uri: Uri) => Promise<void>;
60+
"codeQL.setDefaultTourDatabase": () => Promise<void>;
61+
"codeQL.upgradeCurrentDatabase": () => Promise<void>;
62+
"codeQL.clearCache": () => Promise<void>;
63+
64+
"codeQLDatabases.chooseDatabaseFolder": () => Promise<void>;
65+
"codeQLDatabases.chooseDatabaseArchive": () => Promise<void>;
66+
"codeQLDatabases.chooseDatabaseInternet": () => Promise<void>;
67+
"codeQLDatabases.chooseDatabaseGithub": () => Promise<void>;
68+
"codeQLDatabases.setCurrentDatabase": (
69+
databaseItem: DatabaseItem,
70+
) => Promise<void>;
71+
"codeQLDatabases.sortByName": () => Promise<void>;
72+
"codeQLDatabases.sortByDateAdded": () => Promise<void>;
73+
"codeQLDatabases.removeOrphanedDatabases": () => Promise<void>;
74+
75+
"codeQLDatabases.removeDatabase": SelectionCommandFunction<DatabaseItem>;
76+
"codeQLDatabases.upgradeDatabase": SelectionCommandFunction<DatabaseItem>;
77+
"codeQLDatabases.renameDatabase": SelectionCommandFunction<DatabaseItem>;
78+
"codeQLDatabases.openDatabaseFolder": SelectionCommandFunction<DatabaseItem>;
79+
"codeQLDatabases.addDatabaseSource": SelectionCommandFunction<DatabaseItem>;
80+
};
81+
5682
// Commands tied to variant analysis
5783
export type VariantAnalysisCommands = {
5884
"codeQL.openVariantAnalysisLogs": (
@@ -64,6 +90,7 @@ export type VariantAnalysisCommands = {
6490

6591
export type AllCommands = BaseCommands &
6692
QueryHistoryCommands &
93+
LocalDatabasesCommands &
6794
VariantAnalysisCommands;
6895

6996
export type AppCommandManager = CommandManager<AllCommands>;

extensions/ql-vscode/src/extension.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ import { CodeQLCliServer } from "./cli";
3535
import {
3636
CliConfigListener,
3737
DistributionConfigListener,
38-
isCanary,
3938
joinOrderWarningThreshold,
4039
MAX_QUERIES,
4140
QueryHistoryConfigListener,
@@ -642,7 +641,6 @@ async function activateWithInstalledDistribution(
642641
getContextStoragePath(ctx),
643642
ctx.extensionPath,
644643
);
645-
databaseUI.init();
646644
ctx.subscriptions.push(databaseUI);
647645

648646
void extLogger.log("Initializing evaluator log viewer.");
@@ -1096,6 +1094,7 @@ async function activateWithInstalledDistribution(
10961094
...getCommands(),
10971095
...qhm.getCommands(),
10981096
...variantAnalysisManager.getCommands(),
1097+
...databaseUI.getCommands(),
10991098
};
11001099

11011100
for (const [commandName, command] of Object.entries(allCommands)) {
@@ -1290,8 +1289,7 @@ async function activateWithInstalledDistribution(
12901289
commandRunnerWithProgress(
12911290
"codeQL.chooseDatabaseGithub",
12921291
async (progress: ProgressCallback, token: CancellationToken) => {
1293-
const credentials = isCanary() ? app.credentials : undefined;
1294-
await databaseUI.chooseDatabaseGithub(credentials, progress, token);
1292+
await databaseUI.chooseDatabaseGithub(progress, token);
12951293
},
12961294
{
12971295
title: "Adding database from GitHub",

extensions/ql-vscode/src/local-databases-ui.ts

Lines changed: 29 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import {
2121
DatabaseItem,
2222
DatabaseManager,
2323
} from "./local-databases";
24-
import { commandRunner, ProgressCallback, withProgress } from "./commandRunner";
24+
import { ProgressCallback, withProgress } from "./commandRunner";
2525
import {
2626
isLikelyDatabaseRoot,
2727
isLikelyDbLanguageFolder,
@@ -38,8 +38,8 @@ import { asError, asyncFilter, getErrorMessage } from "./pure/helpers-pure";
3838
import { QueryRunner } from "./queryRunner";
3939
import { isCanary } from "./config";
4040
import { App } from "./common/app";
41-
import { Credentials } from "./common/authentication";
4241
import { redactableError } from "./pure/errors";
42+
import { LocalDatabasesCommands } from "./common/commands";
4343

4444
enum SortOrder {
4545
NameAsc = "NameAsc",
@@ -206,108 +206,34 @@ export class DatabaseUI extends DisposableObject {
206206
);
207207
}
208208

209-
init() {
210-
void extLogger.log("Registering database panel commands.");
211-
this.push(
212-
commandRunner(
213-
"codeQL.setCurrentDatabase",
214-
this.handleSetCurrentDatabase.bind(this),
215-
),
216-
);
217-
this.push(
218-
commandRunner(
219-
"codeQL.setDefaultTourDatabase",
209+
public getCommands(): LocalDatabasesCommands {
210+
return {
211+
"codeQL.setCurrentDatabase": this.handleSetCurrentDatabase.bind(this),
212+
"codeQL.setDefaultTourDatabase":
220213
this.handleSetDefaultTourDatabase.bind(this),
221-
),
222-
);
223-
this.push(
224-
commandRunner(
225-
"codeQL.upgradeCurrentDatabase",
214+
"codeQL.upgradeCurrentDatabase":
226215
this.handleUpgradeCurrentDatabase.bind(this),
227-
),
228-
);
229-
this.push(
230-
commandRunner("codeQL.clearCache", this.handleClearCache.bind(this)),
231-
);
232-
233-
this.push(
234-
commandRunner(
235-
"codeQLDatabases.chooseDatabaseFolder",
216+
"codeQL.clearCache": this.handleClearCache.bind(this),
217+
"codeQLDatabases.chooseDatabaseFolder":
236218
this.handleChooseDatabaseFolder.bind(this),
237-
),
238-
);
239-
this.push(
240-
commandRunner(
241-
"codeQLDatabases.chooseDatabaseArchive",
219+
"codeQLDatabases.chooseDatabaseArchive":
242220
this.handleChooseDatabaseArchive.bind(this),
243-
),
244-
);
245-
this.push(
246-
commandRunner(
247-
"codeQLDatabases.chooseDatabaseInternet",
221+
"codeQLDatabases.chooseDatabaseInternet":
248222
this.handleChooseDatabaseInternet.bind(this),
249-
),
250-
);
251-
this.push(
252-
commandRunner("codeQLDatabases.chooseDatabaseGithub", async () => {
253-
const credentials = isCanary() ? this.app.credentials : undefined;
254-
await this.handleChooseDatabaseGithub(credentials);
255-
}),
256-
);
257-
this.push(
258-
commandRunner(
259-
"codeQLDatabases.setCurrentDatabase",
223+
"codeQLDatabases.chooseDatabaseGithub":
224+
this.handleChooseDatabaseGithub.bind(this),
225+
"codeQLDatabases.setCurrentDatabase":
260226
this.handleMakeCurrentDatabase.bind(this),
261-
),
262-
);
263-
this.push(
264-
commandRunner(
265-
"codeQLDatabases.sortByName",
266-
this.handleSortByName.bind(this),
267-
),
268-
);
269-
this.push(
270-
commandRunner(
271-
"codeQLDatabases.sortByDateAdded",
272-
this.handleSortByDateAdded.bind(this),
273-
),
274-
);
275-
this.push(
276-
commandRunner(
277-
"codeQLDatabases.removeDatabase",
278-
this.handleRemoveDatabase.bind(this),
279-
),
280-
);
281-
this.push(
282-
commandRunner(
283-
"codeQLDatabases.upgradeDatabase",
284-
this.handleUpgradeDatabase.bind(this),
285-
),
286-
);
287-
this.push(
288-
commandRunner(
289-
"codeQLDatabases.renameDatabase",
290-
this.handleRenameDatabase.bind(this),
291-
),
292-
);
293-
this.push(
294-
commandRunner(
295-
"codeQLDatabases.openDatabaseFolder",
296-
this.handleOpenFolder.bind(this),
297-
),
298-
);
299-
this.push(
300-
commandRunner(
301-
"codeQLDatabases.addDatabaseSource",
302-
this.handleAddSource.bind(this),
303-
),
304-
);
305-
this.push(
306-
commandRunner(
307-
"codeQLDatabases.removeOrphanedDatabases",
227+
"codeQLDatabases.sortByName": this.handleSortByName.bind(this),
228+
"codeQLDatabases.sortByDateAdded": this.handleSortByDateAdded.bind(this),
229+
"codeQLDatabases.removeDatabase": this.handleRemoveDatabase.bind(this),
230+
"codeQLDatabases.upgradeDatabase": this.handleUpgradeDatabase.bind(this),
231+
"codeQLDatabases.renameDatabase": this.handleRenameDatabase.bind(this),
232+
"codeQLDatabases.openDatabaseFolder": this.handleOpenFolder.bind(this),
233+
"codeQLDatabases.addDatabaseSource": this.handleAddSource.bind(this),
234+
"codeQLDatabases.removeOrphanedDatabases":
308235
this.handleRemoveOrphanedDatabases.bind(this),
309-
),
310-
);
236+
};
311237
}
312238

313239
private async handleMakeCurrentDatabase(
@@ -505,12 +431,10 @@ export class DatabaseUI extends DisposableObject {
505431
);
506432
}
507433

508-
private async handleChooseDatabaseInternet(): Promise<
509-
DatabaseItem | undefined
510-
> {
434+
private async handleChooseDatabaseInternet(): Promise<void> {
511435
return withProgress(
512436
async (progress, token) => {
513-
return await this.chooseDatabaseInternet(progress, token);
437+
await this.chooseDatabaseInternet(progress, token);
514438
},
515439
{
516440
title: "Adding database from URL",
@@ -519,10 +443,11 @@ export class DatabaseUI extends DisposableObject {
519443
}
520444

521445
public async chooseDatabaseGithub(
522-
credentials: Credentials | undefined,
523446
progress: ProgressCallback,
524447
token: CancellationToken,
525448
): Promise<DatabaseItem | undefined> {
449+
const credentials = isCanary() ? this.app.credentials : undefined;
450+
526451
return await promptImportGithubDatabase(
527452
this.databaseManager,
528453
this.storagePath,
@@ -533,12 +458,10 @@ export class DatabaseUI extends DisposableObject {
533458
);
534459
}
535460

536-
private async handleChooseDatabaseGithub(
537-
credentials: Credentials | undefined,
538-
): Promise<DatabaseItem | undefined> {
461+
private async handleChooseDatabaseGithub(): Promise<void> {
539462
return withProgress(
540463
async (progress, token) => {
541-
return await this.chooseDatabaseGithub(credentials, progress, token);
464+
await this.chooseDatabaseGithub(progress, token);
542465
},
543466
{
544467
title: "Adding database from GitHub",

0 commit comments

Comments
 (0)