Skip to content

Commit c8b0461

Browse files
Merge pull request #1620 from github/mob/consume-update-event
QueryHistory: Consume event when variant analysis status is updated
2 parents 130d8ef + b25cb8a commit c8b0461

File tree

5 files changed

+48
-1
lines changed

5 files changed

+48
-1
lines changed

extensions/ql-vscode/src/query-history.ts

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ import { CompletedLocalQueryInfo, LocalQueryInfo } from './query-results';
3434
import { getQueryHistoryItemId, getQueryText, QueryHistoryInfo } from './query-history-info';
3535
import { DatabaseManager } from './databases';
3636
import { registerQueryHistoryScrubber } from './query-history-scrubber';
37-
import { QueryStatus } from './query-status';
37+
import { QueryStatus, variantAnalysisStatusToQueryStatus } from './query-status';
3838
import { slurpQueryHistory, splatQueryHistory } from './query-serialization';
3939
import * as fs from 'fs-extra';
4040
import { CliVersionConstraint } from './cli';
@@ -52,6 +52,8 @@ import { QueryWithResults } from './run-queries-shared';
5252
import { QueryRunner } from './queryRunner';
5353
import { VariantAnalysisManager } from './remote-queries/variant-analysis-manager';
5454
import { nanoid } from 'nanoid';
55+
import { VariantAnalysisHistoryItem } from './remote-queries/variant-analysis-history-item';
56+
import { getTotalResultCount } from './remote-queries/shared/variant-analysis';
5557

5658
/**
5759
* query-history.ts
@@ -611,6 +613,27 @@ export class QueryHistoryManager extends DisposableObject {
611613
await this.refreshTreeView();
612614
});
613615

616+
const variantAnalysisStatusUpdateSubscription = this.variantAnalysisManager.onVariantAnalysisStatusUpdated(async (variantAnalysis) => {
617+
const items = this.treeDataProvider.allHistory.filter(i => i.t === 'variant-analysis' && i.variantAnalysis.id === variantAnalysis.id);
618+
const status = variantAnalysisStatusToQueryStatus(variantAnalysis.status);
619+
620+
if (items.length > 0) {
621+
items.forEach(async (item) => {
622+
const variantAnalysisHistoryItem = item as VariantAnalysisHistoryItem;
623+
variantAnalysisHistoryItem.status = status;
624+
variantAnalysisHistoryItem.failureReason = variantAnalysis.failureReason;
625+
variantAnalysisHistoryItem.resultCount = getTotalResultCount(variantAnalysis.scannedRepos);
626+
variantAnalysisHistoryItem.variantAnalysis = variantAnalysis;
627+
if (status === QueryStatus.Completed) {
628+
variantAnalysisHistoryItem.completed = true;
629+
}
630+
});
631+
await this.refreshTreeView();
632+
} else {
633+
void logger.log('Variant analysis status update event received for unknown variant analysis');
634+
}
635+
});
636+
614637
const variantAnalysisRemovedSubscription = this.variantAnalysisManager.onVariantAnalysisRemoved(async (variantAnalysis) => {
615638
const item = this.treeDataProvider.allHistory.find(i => i.t === 'variant-analysis' && i.variantAnalysis.id === variantAnalysis.id);
616639
if (item) {
@@ -619,6 +642,7 @@ export class QueryHistoryManager extends DisposableObject {
619642
});
620643

621644
this.push(variantAnalysisAddedSubscription);
645+
this.push(variantAnalysisStatusUpdateSubscription);
622646
this.push(variantAnalysisRemovedSubscription);
623647
}
624648

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,23 @@
1+
import { assertNever } from './pure/helpers-pure';
2+
import { VariantAnalysisStatus } from './remote-queries/shared/variant-analysis';
3+
14
export enum QueryStatus {
25
InProgress = 'InProgress',
36
Completed = 'Completed',
47
Failed = 'Failed',
58
}
9+
10+
export function variantAnalysisStatusToQueryStatus(status: VariantAnalysisStatus): QueryStatus {
11+
switch (status) {
12+
case VariantAnalysisStatus.Succeeded:
13+
return QueryStatus.Completed;
14+
case VariantAnalysisStatus.Failed:
15+
return QueryStatus.Failed;
16+
case VariantAnalysisStatus.InProgress:
17+
return QueryStatus.InProgress;
18+
case VariantAnalysisStatus.Canceled:
19+
return QueryStatus.Completed;
20+
default:
21+
assertNever(status);
22+
}
23+
}

extensions/ql-vscode/src/remote-queries/variant-analysis-manager.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ import * as fs from 'fs-extra';
3333
export class VariantAnalysisManager extends DisposableObject implements VariantAnalysisViewManager<VariantAnalysisView> {
3434
private readonly _onVariantAnalysisAdded = this.push(new EventEmitter<VariantAnalysis>());
3535
public readonly onVariantAnalysisAdded = this._onVariantAnalysisAdded.event;
36+
private readonly _onVariantAnalysisStatusUpdated = this.push(new EventEmitter<VariantAnalysis>());
37+
public readonly onVariantAnalysisStatusUpdated = this._onVariantAnalysisStatusUpdated.event;
3638

3739
private readonly _onVariantAnalysisRemoved = this.push(new EventEmitter<VariantAnalysis>());
3840
public readonly onVariantAnalysisRemoved = this._onVariantAnalysisRemoved.event;
@@ -123,6 +125,7 @@ export class VariantAnalysisManager extends DisposableObject implements VariantA
123125
this.variantAnalyses.set(variantAnalysis.id, variantAnalysis);
124126

125127
await this.getView(variantAnalysis.id)?.updateView(variantAnalysis);
128+
this._onVariantAnalysisStatusUpdated.fire(variantAnalysis);
126129
}
127130

128131
public async onVariantAnalysisSubmitted(variantAnalysis: VariantAnalysis): Promise<void> {

extensions/ql-vscode/src/vscode-tests/no-workspace/query-history.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ describe('query-history', () => {
6868

6969
variantAnalysisManagerStub = {
7070
onVariantAnalysisAdded: sandbox.stub(),
71+
onVariantAnalysisStatusUpdated: sandbox.stub(),
7172
onVariantAnalysisRemoved: sandbox.stub()
7273
} as any as VariantAnalysisManager;
7374
});

extensions/ql-vscode/src/vscode-tests/no-workspace/remote-queries/remote-query-history.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ describe('Remote queries and query history manager', function() {
7878

7979
variantAnalysisManagerStub = {
8080
onVariantAnalysisAdded: sandbox.stub(),
81+
onVariantAnalysisStatusUpdated: sandbox.stub(),
8182
onVariantAnalysisRemoved: sandbox.stub()
8283
} as any as VariantAnalysisManager;
8384
});

0 commit comments

Comments
 (0)