Skip to content

Commit 6b27a42

Browse files
authored
Merge pull request #1614 from github/shati-patel/query-history-get-id
Get query ID for query history items (incl `VariantAnalysisHistoryItem`)
2 parents fa4766f + 1bb68d6 commit 6b27a42

File tree

4 files changed

+59
-14
lines changed

4 files changed

+59
-14
lines changed

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,16 @@ export function getRawQueryName(item: QueryHistoryInfo): string {
1717
assertNever(item);
1818
}
1919
}
20+
21+
export function getQueryHistoryItemId(item: QueryHistoryInfo): string {
22+
switch (item.t) {
23+
case 'local':
24+
return item.initialInfo.id;
25+
case 'remote':
26+
return item.queryId;
27+
case 'variant-analysis':
28+
return item.historyItemId;
29+
default:
30+
assertNever(item);
31+
}
32+
}

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

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import { commandRunner } from './commandRunner';
3131
import { ONE_HOUR_IN_MS, TWO_HOURS_IN_MS } from './pure/time';
3232
import { assertNever, getErrorMessage, getErrorStack } from './pure/helpers-pure';
3333
import { CompletedLocalQueryInfo, LocalQueryInfo } from './query-results';
34-
import { QueryHistoryInfo } from './query-history-info';
34+
import { getQueryHistoryItemId, QueryHistoryInfo } from './query-history-info';
3535
import { DatabaseManager } from './databases';
3636
import { registerQueryHistoryScrubber } from './query-history-scrubber';
3737
import { QueryStatus } from './query-status';
@@ -51,6 +51,7 @@ import { EvalLogData, parseViewerData } from './pure/log-summary-parser';
5151
import { QueryWithResults } from './run-queries-shared';
5252
import { QueryRunner } from './queryRunner';
5353
import { VariantAnalysisManager } from './remote-queries/variant-analysis-manager';
54+
import { nanoid } from 'nanoid';
5455

5556
/**
5657
* query-history.ts
@@ -603,6 +604,7 @@ export class QueryHistoryManager extends DisposableObject {
603604
t: 'variant-analysis',
604605
status: QueryStatus.InProgress,
605606
completed: false,
607+
historyItemId: nanoid(),
606608
variantAnalysis,
607609
});
608610

@@ -1068,19 +1070,13 @@ export class QueryHistoryManager extends DisposableObject {
10681070
queryText: encodeURIComponent(await this.getQueryText(finalSingleItem)),
10691071
});
10701072

1071-
if (finalSingleItem.t === 'variant-analysis') {
1072-
// TODO
1073-
} else {
1074-
const queryId = finalSingleItem.t === 'local'
1075-
? finalSingleItem.initialInfo.id
1076-
: finalSingleItem.queryId;
1073+
const queryId = getQueryHistoryItemId(finalSingleItem);
10771074

1078-
const uri = Uri.parse(
1079-
`codeql:${queryId}?${params.toString()}`, true
1080-
);
1081-
const doc = await workspace.openTextDocument(uri);
1082-
await window.showTextDocument(doc, { preview: false });
1083-
}
1075+
const uri = Uri.parse(
1076+
`codeql:${queryId}?${params.toString()}`, true
1077+
);
1078+
const doc = await workspace.openTextDocument(uri);
1079+
await window.showTextDocument(doc, { preview: false });
10841080
}
10851081

10861082
async handleViewSarifAlerts(

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export interface VariantAnalysisHistoryItem {
1010
resultCount?: number;
1111
status: QueryStatus;
1212
completed: boolean;
13+
readonly historyItemId: string,
1314
variantAnalysis: VariantAnalysis;
1415
userSpecifiedLabel?: string;
1516
}

extensions/ql-vscode/test/pure-tests/query-history-info.test.ts

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { expect } from 'chai';
22

33
import { QueryStatus } from '../../src/query-status';
4-
import { getRawQueryName } from '../../src/query-history-info';
4+
import { getQueryHistoryItemId, getRawQueryName } from '../../src/query-history-info';
55
import { VariantAnalysisHistoryItem } from '../../src/remote-queries/variant-analysis-history-item';
66
import { createMockVariantAnalysis } from '../../src/vscode-tests/factories/remote-queries/shared/variant-analysis';
77
import { createMockLocalQueryInfo } from '../../src/vscode-tests/factories/local-queries/local-query-history-item';
@@ -32,6 +32,7 @@ describe('Query history info', () => {
3232
t: 'variant-analysis',
3333
status: QueryStatus.InProgress,
3434
completed: false,
35+
historyItemId: 'abc123',
3536
variantAnalysis: createMockVariantAnalysis()
3637
};
3738

@@ -40,4 +41,38 @@ describe('Query history info', () => {
4041
expect(queryName).to.equal(queryHistoryItem.variantAnalysis.query.name);
4142
});
4243
});
44+
45+
describe('getQueryHistoryItemId', () => {
46+
it('should get the ID for local history items', () => {
47+
const date = new Date('2022-01-01T00:00:00.000Z');
48+
const dateStr = date.toLocaleString();
49+
50+
const queryHistoryItem = createMockLocalQueryInfo(dateStr);
51+
52+
const historyItemId = getQueryHistoryItemId(queryHistoryItem);
53+
54+
expect(historyItemId).to.equal(queryHistoryItem.initialInfo.id);
55+
});
56+
57+
it('should get the ID for remote query history items', () => {
58+
const queryHistoryItem = createMockRemoteQueryHistoryItem({});
59+
const historyItemId = getQueryHistoryItemId(queryHistoryItem);
60+
61+
expect(historyItemId).to.equal(queryHistoryItem.queryId);
62+
});
63+
64+
it('should get the ID for variant analysis history items', () => {
65+
const queryHistoryItem: VariantAnalysisHistoryItem = {
66+
t: 'variant-analysis',
67+
status: QueryStatus.InProgress,
68+
completed: false,
69+
historyItemId: 'abc123',
70+
variantAnalysis: createMockVariantAnalysis()
71+
};
72+
73+
const historyItemId = getQueryHistoryItemId(queryHistoryItem);
74+
75+
expect(historyItemId).to.equal(queryHistoryItem.historyItemId);
76+
});
77+
});
4378
});

0 commit comments

Comments
 (0)