diff --git a/src/core/index.rs b/src/core/index.rs deleted file mode 100644 index 4f884d8..0000000 --- a/src/core/index.rs +++ /dev/null @@ -1,58 +0,0 @@ -//! Модуль управления индексами - -use std::collections::{HashMap, HashSet}; -use crate::parser::sql::Value; - -/// Индекс для быстрого поиска -#[derive(Debug, Clone)] -pub struct Index { - name: String, - data: HashMap>, -} - -impl Index { - /// Создание нового индекса - pub fn new(name: &str) -> Self { - Self { - name: name.to_string(), - data: HashMap::new(), - } - } - - /// Вставка значения в индекс - pub fn insert(&mut self, value: Value, record_id: u64) { - self.data.entry(value) - .or_insert_with(HashSet::new) - .insert(record_id); - } - - /// Поиск по значению - pub fn search(&self, value: &Value) -> Option> { - self.data.get(value).cloned() - } - - /// Удаление значения из индекса - pub fn remove(&mut self, value: &Value, record_id: u64) { - if let Some(set) = self.data.get_mut(value) { - set.remove(&record_id); - if set.is_empty() { - self.data.remove(value); - } - } - } - - /// Получение всех значений индекса - pub fn get_all(&self) -> Vec<&Value> { - self.data.keys().collect() - } - - /// Очистка индекса - pub fn clear(&mut self) { - self.data.clear(); - } - - /// Получение имени индекса - pub fn name(&self) -> &str { - &self.name - } -}