use std::time::Duration;
use crate::backend::Backend;
#[derive(Clone)]
pub struct ColumnStoreConfig {
pub hot: Option<BackendConfig>,
pub warm: Option<BackendConfig>,
pub cold: Option<BackendConfig>,
pub retention: RetentionConfig,
pub compression: CompressionConfig,
}
#[derive(Clone)]
pub struct BackendConfig {
pub backend: Backend,
pub retention_period: Duration,
}
#[derive(Clone, Debug)]
pub struct RetentionConfig {
pub hot: Duration,
pub warm: Duration,
}
#[derive(Clone, Debug)]
pub struct CompressionConfig {
pub hot_compression_level: u8, pub warm_compression_level: u8, pub cold_compression_level: u8, pub enable_dictionary_compression: bool,
pub enable_delta_compression: bool,
pub enable_rle_compression: bool,
}
impl Default for ColumnStoreConfig {
fn default() -> Self {
Self {
hot: None,
warm: None,
cold: None,
retention: RetentionConfig::default(),
compression: CompressionConfig::default(),
}
}
}
impl Default for RetentionConfig {
fn default() -> Self {
Self {
hot: Duration::from_secs(1800), warm: Duration::from_secs(7200), }
}
}
impl Default for CompressionConfig {
fn default() -> Self {
Self {
hot_compression_level: 1, warm_compression_level: 3, cold_compression_level: 6, enable_dictionary_compression: true,
enable_delta_compression: true,
enable_rle_compression: true,
}
}
}