use super::stages::cleanup::CleanupStats;
use crate::indexing::IndexStats;
#[derive(Debug, Default)]
pub struct SyncStats {
pub added_dirs: usize,
pub removed_dirs: usize,
pub files_indexed: usize,
pub symbols_found: usize,
pub files_removed: usize,
pub symbols_removed: usize,
pub elapsed: std::time::Duration,
}
#[derive(Debug, Default)]
pub struct IncrementalStats {
pub new_files: usize,
pub modified_files: usize,
pub deleted_files: usize,
pub deleted_symbols: usize,
pub index_stats: IndexStats,
pub cleanup_stats: CleanupStats,
pub phase2_stats: Phase2Stats,
pub elapsed: std::time::Duration,
}
#[derive(Debug, Default)]
pub struct Phase2Stats {
pub total_relationships: usize,
pub defines_resolved: usize,
pub calls_resolved: usize,
pub other_resolved: usize,
pub unresolved: usize,
pub elapsed: std::time::Duration,
}
#[derive(Debug, Default)]
pub struct PipelineStats {
pub stage_times: StageTimings,
pub files_processed: usize,
pub files_failed: usize,
pub symbols_extracted: usize,
pub relationships_found: usize,
pub relationships_resolved: usize,
pub peak_memory: usize,
}
#[derive(Debug, Default)]
pub struct StageTimings {
pub discover_ms: u64,
pub read_ms: u64,
pub parse_ms: u64,
pub collect_ms: u64,
pub index_ms: u64,
pub resolve_ms: u64,
}
impl StageTimings {
pub fn total_ms(&self) -> u64 {
self.discover_ms
+ self.read_ms
+ self.parse_ms
+ self.collect_ms
+ self.index_ms
+ self.resolve_ms
}
}