use crate::prelude::*;
pub enum Job {
Additional(AdditionalJob),
Spectrogram(SpectrogramJob),
Transcode(TranscodeJob),
}
impl Job {
#[must_use]
pub fn get_id(&self) -> String {
match self {
Job::Additional(job) => job.id.clone(),
Job::Spectrogram(job) => job.id.clone(),
Job::Transcode(job) => job.id.clone(),
}
}
pub async fn execute(self) -> Result<(), Failure<JobAction>> {
match self {
Job::Additional(job) => job
.execute()
.await
.map_err(Failure::wrap(JobAction::Additional)),
Job::Spectrogram(job) => job
.execute()
.await
.map_err(Failure::wrap(JobAction::Spectrogram)),
Job::Transcode(job) => job
.execute()
.await
.map_err(Failure::wrap(JobAction::Transcode)),
}
}
}