1use serde::{Deserialize, Serialize};
2
3use std::path::PathBuf;
4
5pub const DEFAULT_FILE_SIZE_SOFT_LIMIT_BYTES: i64 = 10 << 20; fn default_file_size_soft_limit_bytes() -> i64 {
8 DEFAULT_FILE_SIZE_SOFT_LIMIT_BYTES
9}
10
11fn default_require_hint_file_write_success() -> bool {
12 false
13}
14
15#[derive(Deserialize, Debug, Clone, Serialize)]
16pub struct AutoMergeConfig {
17 pub check_interval_secs: u64,
19 pub min_inactive_files: i32,
21}
22
23#[derive(Deserialize, Debug, Clone, Serialize)]
24pub struct MergeConfig {
25 #[serde(default = "default_require_hint_file_write_success")]
28 pub require_hint_file_write_success: bool,
29 #[serde(default)]
30 pub auto_merge_config: Option<AutoMergeConfig>,
31}
32
33impl Default for MergeConfig {
34 fn default() -> MergeConfig {
35 MergeConfig {
36 require_hint_file_write_success: false,
37 auto_merge_config: None,
38 }
39 }
40}
41
42#[derive(Deserialize, Debug, Clone, Serialize)]
43pub struct Config {
44 pub datadir: PathBuf,
46 #[serde(default = "default_file_size_soft_limit_bytes")]
47 pub file_size_soft_limit_bytes: i64,
48 #[serde(default)]
49 pub merge_config: MergeConfig,
50}
51
52#[cfg(test)]
53mod tests {
54 use super::*;
55 #[test]
56 fn test_read_minimal_config() {
57 let cfg: Config = toml::from_str(
58 r#"
59 datadir = "/home/ysagade/bitrust_data"
60 "#,
61 )
62 .unwrap();
63 println!("Parsed: {:?}", cfg);
64 }
65}