Map data types

This commit is contained in:
Nora
2023-04-06 14:50:54 +00:00
parent f21117e5dd
commit 1beddf7640
4 changed files with 136 additions and 4 deletions

View File

@@ -0,0 +1,25 @@
export interface VariantAnalysisRepositoryTaskData {
repository: RepositoryData;
analysisStatus: VariantAnalysisRepoStatusData;
resultCount?: number;
artifactSizeInBytes?: number;
failureMessage?: string;
databaseCommitSha?: string;
sourceLocationPrefix?: string;
artifactUrl?: string;
}
interface RepositoryData {
id: number;
fullName: string;
private: boolean;
}
export enum VariantAnalysisRepoStatusData {
Pending = "pending",
InProgress = "inProgress",
Succeeded = "succeeded",
Failed = "failed",
Canceled = "canceled",
TimedOut = "timedOut",
}

View File

@@ -1,18 +1,27 @@
import { outputJson, readJson } from "fs-extra";
import { join } from "path";
import { VariantAnalysisRepositoryTask } from "../shared/variant-analysis";
import { mapRepoTaskToData } from "./repo-task-to-data-mapper";
import { mapRepoTaskToDomain } from "./repo-task-to-domain-mapper";
export const REPO_TASK_FILENAME = "repo_task.json";
export function writeRepoTask(
export async function writeRepoTask(
storageDirectory: string,
repoTask: VariantAnalysisRepositoryTask,
): Promise<void> {
return outputJson(join(storageDirectory, REPO_TASK_FILENAME), repoTask);
const repoTaskData = mapRepoTaskToData(repoTask);
return await outputJson(
join(storageDirectory, REPO_TASK_FILENAME),
repoTaskData,
);
}
export function readRepoTask(
export async function readRepoTask(
storageDirectory: string,
): Promise<VariantAnalysisRepositoryTask> {
return readJson(join(storageDirectory, REPO_TASK_FILENAME));
const repoTaskData = await readJson(
join(storageDirectory, REPO_TASK_FILENAME),
);
return mapRepoTaskToDomain(repoTaskData);
}

View File

@@ -0,0 +1,49 @@
import { assertNever } from "../../pure/helpers-pure";
import {
VariantAnalysisRepositoryTask,
VariantAnalysisRepoStatus,
} from "../shared/variant-analysis";
import {
VariantAnalysisRepositoryTaskData,
VariantAnalysisRepoStatusData,
} from "./repo-task-data-types";
export function mapRepoTaskToData(
repoTask: VariantAnalysisRepositoryTask,
): VariantAnalysisRepositoryTaskData {
return {
repository: {
id: repoTask.repository.id,
fullName: repoTask.repository.fullName,
private: repoTask.repository.private,
},
analysisStatus: mapRepoTaskAnalysisStatusToData(repoTask.analysisStatus),
resultCount: repoTask.resultCount,
artifactSizeInBytes: repoTask.artifactSizeInBytes,
failureMessage: repoTask.failureMessage,
databaseCommitSha: repoTask.databaseCommitSha,
sourceLocationPrefix: repoTask.sourceLocationPrefix,
artifactUrl: repoTask.artifactUrl,
};
}
function mapRepoTaskAnalysisStatusToData(
analysisStatus: VariantAnalysisRepoStatus,
): VariantAnalysisRepoStatusData {
switch (analysisStatus) {
case VariantAnalysisRepoStatus.Pending:
return VariantAnalysisRepoStatusData.Pending;
case VariantAnalysisRepoStatus.InProgress:
return VariantAnalysisRepoStatusData.InProgress;
case VariantAnalysisRepoStatus.Succeeded:
return VariantAnalysisRepoStatusData.Succeeded;
case VariantAnalysisRepoStatus.Failed:
return VariantAnalysisRepoStatusData.Failed;
case VariantAnalysisRepoStatus.Canceled:
return VariantAnalysisRepoStatusData.Canceled;
case VariantAnalysisRepoStatus.TimedOut:
return VariantAnalysisRepoStatusData.TimedOut;
default:
assertNever(analysisStatus);
}
}

View File

@@ -0,0 +1,49 @@
import { assertNever } from "../../pure/helpers-pure";
import {
VariantAnalysisRepositoryTask,
VariantAnalysisRepoStatus,
} from "../shared/variant-analysis";
import {
VariantAnalysisRepositoryTaskData,
VariantAnalysisRepoStatusData,
} from "./repo-task-data-types";
export function mapRepoTaskToDomain(
repoTask: VariantAnalysisRepositoryTaskData,
): VariantAnalysisRepositoryTask {
return {
repository: {
id: repoTask.repository.id,
fullName: repoTask.repository.fullName,
private: repoTask.repository.private,
},
analysisStatus: mapRepoTaskAnalysisStatusToDomain(repoTask.analysisStatus),
resultCount: repoTask.resultCount,
artifactSizeInBytes: repoTask.artifactSizeInBytes,
failureMessage: repoTask.failureMessage,
databaseCommitSha: repoTask.databaseCommitSha,
sourceLocationPrefix: repoTask.sourceLocationPrefix,
artifactUrl: repoTask.artifactUrl,
};
}
function mapRepoTaskAnalysisStatusToDomain(
analysisStatus: VariantAnalysisRepoStatusData,
): VariantAnalysisRepoStatus {
switch (analysisStatus) {
case VariantAnalysisRepoStatusData.Pending:
return VariantAnalysisRepoStatus.Pending;
case VariantAnalysisRepoStatusData.InProgress:
return VariantAnalysisRepoStatus.InProgress;
case VariantAnalysisRepoStatusData.Succeeded:
return VariantAnalysisRepoStatus.Succeeded;
case VariantAnalysisRepoStatusData.Failed:
return VariantAnalysisRepoStatus.Failed;
case VariantAnalysisRepoStatusData.Canceled:
return VariantAnalysisRepoStatus.Canceled;
case VariantAnalysisRepoStatusData.TimedOut:
return VariantAnalysisRepoStatus.TimedOut;
default:
assertNever(analysisStatus);
}
}