use crate::csaf::traits::util::not_present_20::NotPresentInCsaf20;
use crate::csaf::types::csaf_datetime::CsafDateTime;
use crate::csaf_traits::{WithDate, WithOptionalGroupIds, WithOptionalProductIds};
use crate::schema::csaf2_1::schema::FirstKnownExploitationDate as FirstKnownExploitationDate21;
pub trait FirstKnownExploitationDatesTrait: WithDate + WithOptionalProductIds + WithOptionalGroupIds {
fn get_exploitation_date(&self) -> CsafDateTime;
}
impl FirstKnownExploitationDatesTrait for NotPresentInCsaf20 {
fn get_exploitation_date(&self) -> CsafDateTime {
self.into_any()
}
}
impl FirstKnownExploitationDatesTrait for FirstKnownExploitationDate21 {
fn get_exploitation_date(&self) -> CsafDateTime {
CsafDateTime::from(&self.exploitation_date)
}
}
crate::csaf::traits::impl_optional_ids!(FirstKnownExploitationDate21, WithOptionalProductIds, ReturnsValues);
crate::csaf::traits::impl_with_date!(FirstKnownExploitationDate21);
crate::csaf::traits::impl_optional_ids!(FirstKnownExploitationDate21, WithOptionalGroupIds, ReturnsValues);