use serde::{Deserialize, Serialize};
use crate::grouper::DuplicateGroup;
use crate::suppression::baseline_kind::BaselineKind;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct BaselineEntry {
pub kind: BaselineKind,
pub fingerprint: String,
pub members: usize,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub names: Vec<String>,
}
impl BaselineEntry {
#[must_use]
pub fn of(kind: BaselineKind, group: &DuplicateGroup) -> Self {
Self {
kind,
fingerprint: group.fingerprint.to_hex(),
members: group.members.len(),
names: group.members.iter().map(|m| m.name.clone()).collect(),
}
}
#[must_use]
pub fn admits(&self, kind: BaselineKind, group: &DuplicateGroup) -> bool {
self.kind == kind
&& self.fingerprint == group.fingerprint.to_hex()
&& group.members.len() <= self.members
}
}