use crate::identity::ArtifactId;
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Serialize, serde::Deserialize)]
pub enum Status {
Success,
Failure,
Cancelled,
TimedOut,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Serialize, serde::Deserialize)]
pub enum Retryability {
Retryable,
NonRetryable,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Serialize, serde::Deserialize)]
pub enum Compatibility {
Compatible,
Incompatible,
Unknown,
}
#[derive(Clone, Debug, Eq, Hash, PartialEq)]
pub struct ErrorReference(String);
impl ErrorReference {
pub fn new(value: impl Into<String>) -> Option<Self> {
let value = value.into();
(!value.trim().is_empty()).then_some(Self(value))
}
pub fn as_str(&self) -> &str {
&self.0
}
}
#[derive(Clone, Debug, Eq, PartialEq, serde::Serialize, serde::Deserialize)]
pub struct ArtifactReference {
pub artifact_id: ArtifactId,
pub version: Option<String>,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn error_references_require_a_value() {
assert!(ErrorReference::new("").is_none());
assert!(ErrorReference::new("error-event-1").is_some());
}
}