QueryHistory: Consume event when variant analysis status is updated
Update the state of a query history item when the status of the variant analysis has changed.
This commit is contained in:
@@ -34,7 +34,7 @@ import { CompletedLocalQueryInfo, LocalQueryInfo } from './query-results';
|
||||
import { getQueryHistoryItemId, QueryHistoryInfo } from './query-history-info';
|
||||
import { DatabaseManager } from './databases';
|
||||
import { registerQueryHistoryScrubber } from './query-history-scrubber';
|
||||
import { QueryStatus } from './query-status';
|
||||
import { QueryStatus, variantAnalysisStatusToQueryStatus } from './query-status';
|
||||
import { slurpQueryHistory, splatQueryHistory } from './query-serialization';
|
||||
import * as fs from 'fs-extra';
|
||||
import { CliVersionConstraint } from './cli';
|
||||
@@ -52,6 +52,8 @@ import { QueryWithResults } from './run-queries-shared';
|
||||
import { QueryRunner } from './queryRunner';
|
||||
import { VariantAnalysisManager } from './remote-queries/variant-analysis-manager';
|
||||
import { nanoid } from 'nanoid';
|
||||
import { VariantAnalysisHistoryItem } from './remote-queries/variant-analysis-history-item';
|
||||
import { getTotalResultCount } from './remote-queries/shared/variant-analysis';
|
||||
|
||||
/**
|
||||
* query-history.ts
|
||||
@@ -611,7 +613,26 @@ export class QueryHistoryManager extends DisposableObject {
|
||||
await this.refreshTreeView();
|
||||
});
|
||||
|
||||
const variantAnalysisStatusUpdateSubscription = this.variantAnalysisManager.onVariantAnalysisStatusUpdated(async (variantAnalysis) => {
|
||||
const item = this.treeDataProvider.allHistory.find(i => i.t === 'variant-analysis' && i.historyItemId === variantAnalysis.id.toString());
|
||||
const status = variantAnalysisStatusToQueryStatus(variantAnalysis.status);
|
||||
|
||||
if (item) {
|
||||
const variantAnalysisHistoryItem = item as VariantAnalysisHistoryItem;
|
||||
variantAnalysisHistoryItem.status = status;
|
||||
variantAnalysisHistoryItem.failureReason = variantAnalysis.failureReason;
|
||||
variantAnalysisHistoryItem.resultCount = getTotalResultCount(variantAnalysis.scannedRepos);
|
||||
if (status === QueryStatus.Completed) {
|
||||
variantAnalysisHistoryItem.completed = true;
|
||||
}
|
||||
await this.refreshTreeView();
|
||||
} else {
|
||||
void logger.log('Variant analysis status update event received for unknown variant analysis');
|
||||
}
|
||||
});
|
||||
|
||||
this.push(variantAnalysisAddedSubscription);
|
||||
this.push(variantAnalysisStatusUpdateSubscription);
|
||||
}
|
||||
|
||||
private registerToRemoteQueriesEvents() {
|
||||
|
||||
@@ -1,5 +1,23 @@
|
||||
import { assertNever } from './pure/helpers-pure';
|
||||
import { VariantAnalysisStatus } from './remote-queries/shared/variant-analysis';
|
||||
|
||||
export enum QueryStatus {
|
||||
InProgress = 'InProgress',
|
||||
Completed = 'Completed',
|
||||
Failed = 'Failed',
|
||||
}
|
||||
|
||||
export function variantAnalysisStatusToQueryStatus(status: VariantAnalysisStatus): QueryStatus {
|
||||
switch (status) {
|
||||
case VariantAnalysisStatus.Succeeded:
|
||||
return QueryStatus.Completed;
|
||||
case VariantAnalysisStatus.Failed:
|
||||
return QueryStatus.Failed;
|
||||
case VariantAnalysisStatus.InProgress:
|
||||
return QueryStatus.InProgress;
|
||||
case VariantAnalysisStatus.Canceled:
|
||||
return QueryStatus.Completed;
|
||||
default:
|
||||
assertNever(status);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,6 +27,8 @@ import PQueue from 'p-queue';
|
||||
export class VariantAnalysisManager extends DisposableObject implements VariantAnalysisViewManager<VariantAnalysisView> {
|
||||
private readonly _onVariantAnalysisAdded = this.push(new EventEmitter<VariantAnalysis>());
|
||||
public readonly onVariantAnalysisAdded = this._onVariantAnalysisAdded.event;
|
||||
private readonly _onVariantAnalysisStatusUpdated = this.push(new EventEmitter<VariantAnalysis>());
|
||||
public readonly onVariantAnalysisStatusUpdated = this._onVariantAnalysisStatusUpdated.event;
|
||||
|
||||
private readonly variantAnalysisMonitor: VariantAnalysisMonitor;
|
||||
private readonly variantAnalysisResultsManager: VariantAnalysisResultsManager;
|
||||
@@ -97,6 +99,7 @@ export class VariantAnalysisManager extends DisposableObject implements VariantA
|
||||
this.variantAnalyses.set(variantAnalysis.id, variantAnalysis);
|
||||
|
||||
await this.getView(variantAnalysis.id)?.updateView(variantAnalysis);
|
||||
this._onVariantAnalysisStatusUpdated.fire(variantAnalysis);
|
||||
}
|
||||
|
||||
public onVariantAnalysisSubmitted(variantAnalysis: VariantAnalysis): void {
|
||||
|
||||
@@ -67,7 +67,8 @@ describe('query-history', () => {
|
||||
} as any as RemoteQueriesManager;
|
||||
|
||||
variantAnalysisManagerStub = {
|
||||
onVariantAnalysisAdded: sandbox.stub()
|
||||
onVariantAnalysisAdded: sandbox.stub(),
|
||||
onVariantAnalysisStatusUpdated: sandbox.stub()
|
||||
} as any as VariantAnalysisManager;
|
||||
});
|
||||
|
||||
|
||||
@@ -77,7 +77,8 @@ describe('Remote queries and query history manager', function() {
|
||||
} as any as RemoteQueriesManager;
|
||||
|
||||
variantAnalysisManagerStub = {
|
||||
onVariantAnalysisAdded: sandbox.stub()
|
||||
onVariantAnalysisAdded: sandbox.stub(),
|
||||
onVariantAnalysisStatusUpdated: sandbox.stub()
|
||||
} as any as VariantAnalysisManager;
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user