Skip to content

Commit 013701d

Browse files
authored
Merge pull request #2315 from github/charisk/variant-analysis-store-mappers
Introduce mapping layer for variant analysis history items
2 parents d861772 + a15eef8 commit 013701d

File tree

6 files changed

+548
-25
lines changed

6 files changed

+548
-25
lines changed

extensions/ql-vscode/src/query-history/store/query-history-domain-mapper.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,19 @@ import {
1515
SortDirectionDto,
1616
} from "./query-history-local-query-dto";
1717
import { QueryHistoryItemDto } from "./query-history-dto";
18-
import { QueryHistoryVariantAnalysisDto } from "./query-history-variant-analysis-dto";
1918
import {
2019
RawResultsSortState,
2120
SortDirection,
2221
SortedResultSetInfo,
2322
} from "../../pure/interface-types";
23+
import { mapQueryHistoryVariantAnalysisToDto } from "./query-history-variant-analysis-domain-mapper";
2424

2525
export function mapQueryHistoryToDto(
2626
queries: QueryHistoryInfo[],
2727
): QueryHistoryItemDto[] {
2828
return queries.map((q) => {
2929
if (q.t === "variant-analysis") {
30-
const query: QueryHistoryVariantAnalysisDto = q;
31-
return query;
30+
return mapQueryHistoryVariantAnalysisToDto(q);
3231
} else if (q.t === "local") {
3332
return mapLocalQueryInfoToDto(q);
3433
} else {

extensions/ql-vscode/src/query-history/store/query-history-dto-mapper.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import {
55
} from "../../query-results";
66
import { QueryEvaluationInfo } from "../../run-queries-shared";
77
import { QueryHistoryInfo } from "../query-history-info";
8-
import { VariantAnalysisHistoryItem } from "../variant-analysis-history-item";
98
import {
109
CompletedQueryInfoDto,
1110
QueryEvaluationInfoDto,
@@ -23,14 +22,14 @@ import {
2322
SortDirection,
2423
SortedResultSetInfo,
2524
} from "../../pure/interface-types";
25+
import { mapQueryHistoryVariantAnalysisToDomainModel } from "./query-history-variant-analysis-dto-mapper";
2626

2727
export function mapQueryHistoryToDomainModel(
2828
queries: QueryHistoryItemDto[],
2929
): QueryHistoryInfo[] {
3030
return queries.map((d) => {
3131
if (d.t === "variant-analysis") {
32-
const query: VariantAnalysisHistoryItem = d;
33-
return query;
32+
return mapQueryHistoryVariantAnalysisToDomainModel(d);
3433
} else if (d.t === "local") {
3534
return mapLocalQueryItemToDomainModel(d);
3635
}
Lines changed: 235 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,235 @@
1+
import {
2+
QueryHistoryVariantAnalysisDto,
3+
QueryLanguageDto,
4+
QueryStatusDto,
5+
VariantAnalysisDto,
6+
VariantAnalysisFailureReasonDto,
7+
VariantAnalysisRepoStatusDto,
8+
VariantAnalysisScannedRepositoryDto,
9+
VariantAnalysisSkippedRepositoriesDto,
10+
VariantAnalysisSkippedRepositoryDto,
11+
VariantAnalysisSkippedRepositoryGroupDto,
12+
VariantAnalysisStatusDto,
13+
} from "./query-history-variant-analysis-dto";
14+
import {
15+
VariantAnalysis,
16+
VariantAnalysisFailureReason,
17+
VariantAnalysisRepoStatus,
18+
VariantAnalysisScannedRepository,
19+
VariantAnalysisSkippedRepositories,
20+
VariantAnalysisSkippedRepository,
21+
VariantAnalysisSkippedRepositoryGroup,
22+
VariantAnalysisStatus,
23+
} from "../../variant-analysis/shared/variant-analysis";
24+
import { assertNever } from "../../pure/helpers-pure";
25+
import { QueryLanguage } from "../../common/query-language";
26+
import { QueryStatus } from "../../query-status";
27+
import { VariantAnalysisHistoryItem } from "../variant-analysis-history-item";
28+
29+
export function mapQueryHistoryVariantAnalysisToDto(
30+
item: VariantAnalysisHistoryItem,
31+
): QueryHistoryVariantAnalysisDto {
32+
return {
33+
t: "variant-analysis",
34+
failureReason: item.failureReason,
35+
resultCount: item.resultCount,
36+
status: mapQueryStatusToDto(item.status),
37+
completed: item.completed,
38+
variantAnalysis: mapVariantAnalysisDtoToDto(item.variantAnalysis),
39+
userSpecifiedLabel: item.userSpecifiedLabel,
40+
};
41+
}
42+
43+
function mapVariantAnalysisDtoToDto(
44+
variantAnalysis: VariantAnalysis,
45+
): VariantAnalysisDto {
46+
return {
47+
id: variantAnalysis.id,
48+
controllerRepo: {
49+
id: variantAnalysis.controllerRepo.id,
50+
fullName: variantAnalysis.controllerRepo.fullName,
51+
private: variantAnalysis.controllerRepo.private,
52+
},
53+
query: {
54+
name: variantAnalysis.query.name,
55+
filePath: variantAnalysis.query.filePath,
56+
language: mapQueryLanguageToDto(variantAnalysis.query.language),
57+
text: variantAnalysis.query.text,
58+
},
59+
databases: {
60+
repositories: variantAnalysis.databases.repositories,
61+
repositoryLists: variantAnalysis.databases.repositoryLists,
62+
repositoryOwners: variantAnalysis.databases.repositoryOwners,
63+
},
64+
createdAt: variantAnalysis.createdAt,
65+
updatedAt: variantAnalysis.updatedAt,
66+
executionStartTime: variantAnalysis.executionStartTime,
67+
status: mapVariantAnalysisStatusToDto(variantAnalysis.status),
68+
completedAt: variantAnalysis.completedAt,
69+
actionsWorkflowRunId: variantAnalysis.actionsWorkflowRunId,
70+
failureReason:
71+
variantAnalysis.failureReason &&
72+
mapVariantAnalysisFailureReasonToDto(variantAnalysis.failureReason),
73+
scannedRepos:
74+
variantAnalysis.scannedRepos &&
75+
mapVariantAnalysisScannedRepositoriesToDto(variantAnalysis.scannedRepos),
76+
skippedRepos:
77+
variantAnalysis.skippedRepos &&
78+
mapVariantAnalysisSkippedRepositoriesToDto(variantAnalysis.skippedRepos),
79+
};
80+
}
81+
82+
function mapVariantAnalysisScannedRepositoriesToDto(
83+
repos: VariantAnalysisScannedRepository[],
84+
): VariantAnalysisScannedRepositoryDto[] {
85+
return repos.map(mapVariantAnalysisScannedRepositoryToDto);
86+
}
87+
88+
function mapVariantAnalysisScannedRepositoryToDto(
89+
repo: VariantAnalysisScannedRepository,
90+
): VariantAnalysisScannedRepositoryDto {
91+
return {
92+
repository: {
93+
id: repo.repository.id,
94+
fullName: repo.repository.fullName,
95+
private: repo.repository.private,
96+
stargazersCount: repo.repository.stargazersCount,
97+
updatedAt: repo.repository.updatedAt,
98+
},
99+
analysisStatus: mapVariantAnalysisRepoStatusToDto(repo.analysisStatus),
100+
resultCount: repo.resultCount,
101+
artifactSizeInBytes: repo.artifactSizeInBytes,
102+
failureMessage: repo.failureMessage,
103+
};
104+
}
105+
106+
function mapVariantAnalysisSkippedRepositoriesToDto(
107+
repos: VariantAnalysisSkippedRepositories,
108+
): VariantAnalysisSkippedRepositoriesDto {
109+
return {
110+
accessMismatchRepos:
111+
repos.accessMismatchRepos &&
112+
mapVariantAnalysisSkippedRepositoryGroupToDto(repos.accessMismatchRepos),
113+
notFoundRepos:
114+
repos.notFoundRepos &&
115+
mapVariantAnalysisSkippedRepositoryGroupToDto(repos.notFoundRepos),
116+
noCodeqlDbRepos:
117+
repos.noCodeqlDbRepos &&
118+
mapVariantAnalysisSkippedRepositoryGroupToDto(repos.noCodeqlDbRepos),
119+
overLimitRepos:
120+
repos.overLimitRepos &&
121+
mapVariantAnalysisSkippedRepositoryGroupToDto(repos.overLimitRepos),
122+
};
123+
}
124+
125+
function mapVariantAnalysisSkippedRepositoryGroupToDto(
126+
repoGroup: VariantAnalysisSkippedRepositoryGroup,
127+
): VariantAnalysisSkippedRepositoryGroupDto {
128+
return {
129+
repositoryCount: repoGroup.repositoryCount,
130+
repositories: repoGroup.repositories.map(
131+
mapVariantAnalysisSkippedRepositoryToDto,
132+
),
133+
};
134+
}
135+
136+
function mapVariantAnalysisSkippedRepositoryToDto(
137+
repo: VariantAnalysisSkippedRepository,
138+
): VariantAnalysisSkippedRepositoryDto {
139+
return {
140+
id: repo.id,
141+
fullName: repo.fullName,
142+
private: repo.private,
143+
stargazersCount: repo.stargazersCount,
144+
updatedAt: repo.updatedAt,
145+
};
146+
}
147+
148+
function mapVariantAnalysisFailureReasonToDto(
149+
failureReason: VariantAnalysisFailureReason,
150+
): VariantAnalysisFailureReasonDto {
151+
switch (failureReason) {
152+
case VariantAnalysisFailureReason.NoReposQueried:
153+
return VariantAnalysisFailureReasonDto.NoReposQueried;
154+
case VariantAnalysisFailureReason.ActionsWorkflowRunFailed:
155+
return VariantAnalysisFailureReasonDto.ActionsWorkflowRunFailed;
156+
case VariantAnalysisFailureReason.InternalError:
157+
return VariantAnalysisFailureReasonDto.InternalError;
158+
default:
159+
assertNever(failureReason);
160+
}
161+
}
162+
163+
function mapVariantAnalysisRepoStatusToDto(
164+
status: VariantAnalysisRepoStatus,
165+
): VariantAnalysisRepoStatusDto {
166+
switch (status) {
167+
case VariantAnalysisRepoStatus.Pending:
168+
return VariantAnalysisRepoStatusDto.Pending;
169+
case VariantAnalysisRepoStatus.InProgress:
170+
return VariantAnalysisRepoStatusDto.InProgress;
171+
case VariantAnalysisRepoStatus.Succeeded:
172+
return VariantAnalysisRepoStatusDto.Succeeded;
173+
case VariantAnalysisRepoStatus.Failed:
174+
return VariantAnalysisRepoStatusDto.Failed;
175+
case VariantAnalysisRepoStatus.Canceled:
176+
return VariantAnalysisRepoStatusDto.Canceled;
177+
case VariantAnalysisRepoStatus.TimedOut:
178+
return VariantAnalysisRepoStatusDto.TimedOut;
179+
default:
180+
assertNever(status);
181+
}
182+
}
183+
184+
function mapVariantAnalysisStatusToDto(
185+
status: VariantAnalysisStatus,
186+
): VariantAnalysisStatusDto {
187+
switch (status) {
188+
case VariantAnalysisStatus.InProgress:
189+
return VariantAnalysisStatusDto.InProgress;
190+
case VariantAnalysisStatus.Succeeded:
191+
return VariantAnalysisStatusDto.Succeeded;
192+
case VariantAnalysisStatus.Failed:
193+
return VariantAnalysisStatusDto.Failed;
194+
case VariantAnalysisStatus.Canceled:
195+
return VariantAnalysisStatusDto.Canceled;
196+
default:
197+
assertNever(status);
198+
}
199+
}
200+
201+
function mapQueryLanguageToDto(language: QueryLanguage): QueryLanguageDto {
202+
switch (language) {
203+
case QueryLanguage.CSharp:
204+
return QueryLanguageDto.CSharp;
205+
case QueryLanguage.Cpp:
206+
return QueryLanguageDto.Cpp;
207+
case QueryLanguage.Go:
208+
return QueryLanguageDto.Go;
209+
case QueryLanguage.Java:
210+
return QueryLanguageDto.Java;
211+
case QueryLanguage.Javascript:
212+
return QueryLanguageDto.Javascript;
213+
case QueryLanguage.Python:
214+
return QueryLanguageDto.Python;
215+
case QueryLanguage.Ruby:
216+
return QueryLanguageDto.Ruby;
217+
case QueryLanguage.Swift:
218+
return QueryLanguageDto.Swift;
219+
default:
220+
assertNever(language);
221+
}
222+
}
223+
224+
function mapQueryStatusToDto(status: QueryStatus): QueryStatusDto {
225+
switch (status) {
226+
case QueryStatus.InProgress:
227+
return QueryStatusDto.InProgress;
228+
case QueryStatus.Completed:
229+
return QueryStatusDto.Completed;
230+
case QueryStatus.Failed:
231+
return QueryStatusDto.Failed;
232+
default:
233+
assertNever(status);
234+
}
235+
}

0 commit comments

Comments
 (0)