Delete src/core/index.rs

This commit is contained in:
Григорий Сафронов 2026-01-15 19:38:16 +00:00
parent 2eae7f785c
commit e2dfcc0445

View File

@ -1,58 +0,0 @@
//! Модуль управления индексами
use std::collections::{HashMap, HashSet};
use crate::parser::sql::Value;
/// Индекс для быстрого поиска
#[derive(Debug, Clone)]
pub struct Index {
name: String,
data: HashMap<Value, HashSet<u64>>,
}
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<HashSet<u64>> {
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
}
}