pub mod delta;
pub mod patterns;
pub mod privacy;
pub mod registry;
pub use delta::{CollectiveDelta, DeltaPattern, MistakeCategory, MistakeReport};
pub use patterns::{
ComplexityBucket, PatternCategory, PatternExtractor, PatternQuality, PatternSignature,
UsagePattern,
};
pub use privacy::{filter_shareable, is_shareable, NonShareable, Shareable, ShareableCheck};
pub use registry::{CollectiveCache, RegistryClient, RegistryMode};
#[derive(Debug)]
pub struct CollectiveManager {
registry: RegistryClient,
extractor: PatternExtractor,
}
impl CollectiveManager {
pub fn offline() -> Self {
Self {
registry: RegistryClient::offline(),
extractor: PatternExtractor::new(),
}
}
pub fn online(endpoint: String) -> Self {
Self {
registry: RegistryClient::online(endpoint),
extractor: PatternExtractor::new(),
}
}
pub fn mode(&self) -> &RegistryMode {
self.registry.mode()
}
pub fn is_offline(&self) -> bool {
*self.registry.mode() == RegistryMode::Offline
}
pub fn extract_patterns(&self, graph: &crate::graph::CodeGraph) -> Vec<UsagePattern> {
self.extractor.extract(graph)
}
pub fn query_patterns(&mut self, language: &str, category: &str) -> Vec<UsagePattern> {
self.registry.query_patterns(language, category)
}
pub fn publish_delta(&mut self, delta: &CollectiveDelta) -> bool {
self.registry.publish_delta(delta)
}
pub fn registry(&self) -> &RegistryClient {
&self.registry
}
pub fn registry_mut(&mut self) -> &mut RegistryClient {
&mut self.registry
}
}