codetether_agent/session/index/
cache.rs1use std::collections::BTreeMap;
7
8use serde::{Deserialize, Serialize};
9
10use super::types::{SummaryNode, SummaryRange};
11
12#[derive(Debug, Clone, Default, Serialize, Deserialize)]
17pub struct SummaryIndex {
18 #[serde(default)]
19 pub(super) tree: BTreeMap<SummaryRange, SummaryNode>,
20 #[serde(default)]
21 pub(super) generation: u64,
22 #[serde(default)]
23 pub(super) lru_order: Vec<SummaryRange>,
24}
25
26impl SummaryIndex {
28 pub fn new() -> Self {
30 Self::default()
31 }
32
33 pub fn generation(&self) -> u64 {
35 self.generation
36 }
37
38 pub fn len(&self) -> usize {
40 self.tree.len()
41 }
42
43 pub fn is_empty(&self) -> bool {
45 self.tree.is_empty()
46 }
47
48 pub fn get(&self, range: SummaryRange) -> Option<&SummaryNode> {
50 self.tree.get(&range)
51 }
52
53 pub fn entries(&self) -> impl Iterator<Item = (&SummaryRange, &SummaryNode)> {
55 self.tree.iter()
56 }
57}