use crate::prelude::*;
use serde::{Deserialize, Serialize};
pub(crate) struct SpectrogramSuccess {
pub path: PathBuf,
pub count: usize,
}
#[derive(Clone, Deserialize, Serialize)]
pub(crate) struct SpectrogramStatus {
pub success: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub path: Option<PathBuf>,
pub count: usize,
pub completed: TimeStamp,
#[serde(skip_serializing_if = "Option::is_none")]
pub error: Option<rogue_logging::Error>,
}
impl SpectrogramStatus {
pub fn new(result: Result<SpectrogramSuccess, Failure<SpectrogramAction>>) -> Self {
match result {
Ok(success) => Self {
success: true,
path: Some(success.path),
count: success.count,
completed: TimeStamp::now(),
error: None,
},
Err(failure) => Self {
success: false,
path: None,
count: 0,
completed: TimeStamp::now(),
error: Some(failure.to_error()),
},
}
}
}