use std::collections::BTreeMap;
use serde::{Deserialize, Serialize};
use super::types::{SummaryNode, SummaryRange};
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct SummaryIndex {
#[serde(default)]
pub(super) tree: BTreeMap<SummaryRange, SummaryNode>,
#[serde(default)]
pub(super) generation: u64,
#[serde(default)]
pub(super) lru_order: Vec<SummaryRange>,
}
impl SummaryIndex {
pub fn new() -> Self {
Self::default()
}
pub fn generation(&self) -> u64 {
self.generation
}
pub fn len(&self) -> usize {
self.tree.len()
}
pub fn is_empty(&self) -> bool {
self.tree.is_empty()
}
pub fn get(&self, range: SummaryRange) -> Option<&SummaryNode> {
self.tree.get(&range)
}
pub fn entries(&self) -> impl Iterator<Item = (&SummaryRange, &SummaryNode)> {
self.tree.iter()
}
}