use serde::{Deserialize, Serialize};
use crate::shard::optimizers::config::{
get_indexing_threshold_kb, get_max_segment_size_kb, get_number_segments,
};
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case", default)]
pub struct EdgeOptimizersConfig {
#[serde(default)]
pub deleted_threshold: Option<f64>,
#[serde(default)]
pub vacuum_min_vector_number: Option<usize>,
pub default_segment_number: Option<usize>,
#[serde(alias = "max_segment_size_kb")]
pub max_segment_size: Option<usize>,
#[serde(alias = "indexing_threshold_kb")]
pub indexing_threshold: Option<usize>,
#[serde(default)]
pub prevent_unoptimized: Option<bool>,
}
impl EdgeOptimizersConfig {
pub fn get_number_segments(&self) -> usize {
get_number_segments(self.default_segment_number.unwrap_or_default())
}
pub fn get_indexing_threshold_kb(&self) -> usize {
get_indexing_threshold_kb(self.indexing_threshold)
}
pub fn get_max_segment_size_kb(&self, num_indexing_threads: usize) -> usize {
get_max_segment_size_kb(self.max_segment_size, num_indexing_threads)
}
}