import { JOB_EXECUTION_STATUS } from '../../../../constants/JobExecutionStatus.constants'; import { JobExecution, JobExecutionDto } from '../../../../model/JobExecution'; import { parsePartitionKey } from '../../../../ParsePartitionKey'; export const convertDynamoDbItemToJobExecution = (dbItem: JobExecutionDto): JobExecution => { return { context: dbItem.context.S as string, ecsTaskId: dbItem.ecsTaskId.S ? (dbItem.ecsTaskId.S as string) : null, id: dbItem.id.S as string, jobName: dbItem.jobName.S as string, status: dbItem.status.S as JOB_EXECUTION_STATUS, timeFinished: dbItem.timeFinished.S ? (dbItem.timeFinished.S as string) : null, timeQueued: dbItem.timeQueued.S as string, timeStarted: dbItem.timeStarted.S ? (dbItem.timeStarted.S as string) : null, type: `${parsePartitionKey(dbItem.pk.S as string).entityType}-${dbItem.jobName.S}`, version: dbItem.version.S as string, input: dbItem.input?.S ? JSON.parse(dbItem.input.S) : null, retryCount: dbItem.retryCount?.N ? parseInt(dbItem.retryCount.N, 10) : 0, lastFailureReason: dbItem.lastFailureReason?.S ? (dbItem.lastFailureReason.S as string) : null, retryAfter: dbItem.retryAfter?.S ? (dbItem.retryAfter.S as string) : null, }; };