using Butter.Dtos.Jobs;
using Lactose.Jobs;
namespace Lactose.Mapper;
///
/// Provides mapping methods for converting Job objects to DTOs.
///
public static class JobMapper {
///
/// Maps a Job to a JobStatusDto.
///
/// The job to map.
/// A JobStatusDto representing the job.
public static JobStatusDto ToJobStatusDto(this Job job) => new JobStatusDto() {
Id = job.Id,
ParentJobId = job.ParentJobId,
Name = job.Name,
Status = job.JobStatus.Status,
Progress = job.JobStatus.Progress,
Message = job.JobStatus.Message,
Created = job.JobStatus.Created,
Started = job.JobStatus.Started,
Finished = job.JobStatus.Finished,
JobType = job switch {
FileSystemCrawlJob => EJobType.FileSystemScan,
ThumbnailJob => EJobType.ThumbnailGeneration,
PreviewJob => EJobType.PreviewGeneration,
IntegrityCheckJob => EJobType.IntegrityCheck,
PHashJob => EJobType.PHashGeneration,
MetadataJob => EJobType.MetadataExtraction,
CreatePersonsJob => EJobType.CreatePersons,
CreateAlbumsJob => EJobType.CreateAlbums,
_ => throw new ArgumentOutOfRangeException(nameof(job))
}
};
}