use super::field::Field;
#[derive(Debug, Clone, Default, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize))]
pub struct Document {
fields: Vec<Field>,
}
impl Document {
#[must_use]
pub fn new(fields: Vec<Field>) -> Self {
Self { fields }
}
#[must_use]
pub fn fields(&self) -> &[Field] {
&self.fields
}
#[must_use]
pub fn find(&self, key: &str) -> Option<&str> {
self.fields
.iter()
.find(|f| f.name == key)
.map(|f| f.value.as_str())
}
#[must_use]
pub fn has(&self, key: &str) -> bool {
self.fields.iter().any(|f| f.name == key)
}
}