Skip to content

Commit 1beddf7

Browse files
committed
Map data types
1 parent f21117e commit 1beddf7

File tree

4 files changed

+136
-4
lines changed

4 files changed

+136
-4
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
export interface VariantAnalysisRepositoryTaskData {
2+
repository: RepositoryData;
3+
analysisStatus: VariantAnalysisRepoStatusData;
4+
resultCount?: number;
5+
artifactSizeInBytes?: number;
6+
failureMessage?: string;
7+
databaseCommitSha?: string;
8+
sourceLocationPrefix?: string;
9+
artifactUrl?: string;
10+
}
11+
12+
interface RepositoryData {
13+
id: number;
14+
fullName: string;
15+
private: boolean;
16+
}
17+
18+
export enum VariantAnalysisRepoStatusData {
19+
Pending = "pending",
20+
InProgress = "inProgress",
21+
Succeeded = "succeeded",
22+
Failed = "failed",
23+
Canceled = "canceled",
24+
TimedOut = "timedOut",
25+
}
Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,27 @@
11
import { outputJson, readJson } from "fs-extra";
22
import { join } from "path";
33
import { VariantAnalysisRepositoryTask } from "../shared/variant-analysis";
4+
import { mapRepoTaskToData } from "./repo-task-to-data-mapper";
5+
import { mapRepoTaskToDomain } from "./repo-task-to-domain-mapper";
46

57
export const REPO_TASK_FILENAME = "repo_task.json";
68

7-
export function writeRepoTask(
9+
export async function writeRepoTask(
810
storageDirectory: string,
911
repoTask: VariantAnalysisRepositoryTask,
1012
): Promise<void> {
11-
return outputJson(join(storageDirectory, REPO_TASK_FILENAME), repoTask);
13+
const repoTaskData = mapRepoTaskToData(repoTask);
14+
return await outputJson(
15+
join(storageDirectory, REPO_TASK_FILENAME),
16+
repoTaskData,
17+
);
1218
}
1319

14-
export function readRepoTask(
20+
export async function readRepoTask(
1521
storageDirectory: string,
1622
): Promise<VariantAnalysisRepositoryTask> {
17-
return readJson(join(storageDirectory, REPO_TASK_FILENAME));
23+
const repoTaskData = await readJson(
24+
join(storageDirectory, REPO_TASK_FILENAME),
25+
);
26+
return mapRepoTaskToDomain(repoTaskData);
1827
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import { assertNever } from "../../pure/helpers-pure";
2+
import {
3+
VariantAnalysisRepositoryTask,
4+
VariantAnalysisRepoStatus,
5+
} from "../shared/variant-analysis";
6+
import {
7+
VariantAnalysisRepositoryTaskData,
8+
VariantAnalysisRepoStatusData,
9+
} from "./repo-task-data-types";
10+
11+
export function mapRepoTaskToData(
12+
repoTask: VariantAnalysisRepositoryTask,
13+
): VariantAnalysisRepositoryTaskData {
14+
return {
15+
repository: {
16+
id: repoTask.repository.id,
17+
fullName: repoTask.repository.fullName,
18+
private: repoTask.repository.private,
19+
},
20+
analysisStatus: mapRepoTaskAnalysisStatusToData(repoTask.analysisStatus),
21+
resultCount: repoTask.resultCount,
22+
artifactSizeInBytes: repoTask.artifactSizeInBytes,
23+
failureMessage: repoTask.failureMessage,
24+
databaseCommitSha: repoTask.databaseCommitSha,
25+
sourceLocationPrefix: repoTask.sourceLocationPrefix,
26+
artifactUrl: repoTask.artifactUrl,
27+
};
28+
}
29+
30+
function mapRepoTaskAnalysisStatusToData(
31+
analysisStatus: VariantAnalysisRepoStatus,
32+
): VariantAnalysisRepoStatusData {
33+
switch (analysisStatus) {
34+
case VariantAnalysisRepoStatus.Pending:
35+
return VariantAnalysisRepoStatusData.Pending;
36+
case VariantAnalysisRepoStatus.InProgress:
37+
return VariantAnalysisRepoStatusData.InProgress;
38+
case VariantAnalysisRepoStatus.Succeeded:
39+
return VariantAnalysisRepoStatusData.Succeeded;
40+
case VariantAnalysisRepoStatus.Failed:
41+
return VariantAnalysisRepoStatusData.Failed;
42+
case VariantAnalysisRepoStatus.Canceled:
43+
return VariantAnalysisRepoStatusData.Canceled;
44+
case VariantAnalysisRepoStatus.TimedOut:
45+
return VariantAnalysisRepoStatusData.TimedOut;
46+
default:
47+
assertNever(analysisStatus);
48+
}
49+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import { assertNever } from "../../pure/helpers-pure";
2+
import {
3+
VariantAnalysisRepositoryTask,
4+
VariantAnalysisRepoStatus,
5+
} from "../shared/variant-analysis";
6+
import {
7+
VariantAnalysisRepositoryTaskData,
8+
VariantAnalysisRepoStatusData,
9+
} from "./repo-task-data-types";
10+
11+
export function mapRepoTaskToDomain(
12+
repoTask: VariantAnalysisRepositoryTaskData,
13+
): VariantAnalysisRepositoryTask {
14+
return {
15+
repository: {
16+
id: repoTask.repository.id,
17+
fullName: repoTask.repository.fullName,
18+
private: repoTask.repository.private,
19+
},
20+
analysisStatus: mapRepoTaskAnalysisStatusToDomain(repoTask.analysisStatus),
21+
resultCount: repoTask.resultCount,
22+
artifactSizeInBytes: repoTask.artifactSizeInBytes,
23+
failureMessage: repoTask.failureMessage,
24+
databaseCommitSha: repoTask.databaseCommitSha,
25+
sourceLocationPrefix: repoTask.sourceLocationPrefix,
26+
artifactUrl: repoTask.artifactUrl,
27+
};
28+
}
29+
30+
function mapRepoTaskAnalysisStatusToDomain(
31+
analysisStatus: VariantAnalysisRepoStatusData,
32+
): VariantAnalysisRepoStatus {
33+
switch (analysisStatus) {
34+
case VariantAnalysisRepoStatusData.Pending:
35+
return VariantAnalysisRepoStatus.Pending;
36+
case VariantAnalysisRepoStatusData.InProgress:
37+
return VariantAnalysisRepoStatus.InProgress;
38+
case VariantAnalysisRepoStatusData.Succeeded:
39+
return VariantAnalysisRepoStatus.Succeeded;
40+
case VariantAnalysisRepoStatusData.Failed:
41+
return VariantAnalysisRepoStatus.Failed;
42+
case VariantAnalysisRepoStatusData.Canceled:
43+
return VariantAnalysisRepoStatus.Canceled;
44+
case VariantAnalysisRepoStatusData.TimedOut:
45+
return VariantAnalysisRepoStatus.TimedOut;
46+
default:
47+
assertNever(analysisStatus);
48+
}
49+
}

0 commit comments

Comments
 (0)