1use serde::{Deserialize, Serialize};
2
3#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
5pub struct PartialBuildConfig {
6 pub chunk_size: Option<usize>,
7 pub slide_len: Option<usize>,
8 pub image_size: Option<usize>,
9 pub min_summary_len: Option<usize>,
10 pub max_summary_len: Option<usize>,
11 pub strict_file_reader: Option<bool>,
12 pub compression_threshold: Option<u64>,
13 pub compression_level: Option<u32>,
14 pub summary_after_build: Option<bool>,
15}
16
17impl PartialBuildConfig {
18 pub fn apply_to(&self, config: &mut BuildConfig) {
20 if let Some(chunk_size) = self.chunk_size {
21 config.chunk_size = chunk_size;
22 }
23 if let Some(slide_len) = self.slide_len {
24 config.slide_len = slide_len;
25 }
26 if let Some(image_size) = self.image_size {
27 config.image_size = image_size;
28 }
29 if let Some(min_summary_len) = self.min_summary_len {
30 config.min_summary_len = min_summary_len;
31 }
32 if let Some(max_summary_len) = self.max_summary_len {
33 config.max_summary_len = max_summary_len;
34 }
35 if let Some(strict_file_reader) = self.strict_file_reader {
36 config.strict_file_reader = strict_file_reader;
37 }
38 if let Some(compression_threshold) = self.compression_threshold {
39 config.compression_threshold = compression_threshold;
40 }
41 if let Some(compression_level) = self.compression_level {
42 config.compression_level = compression_level;
43 }
44 if let Some(summary_after_build) = self.summary_after_build {
45 config.summary_after_build = summary_after_build;
46 }
47 }
48}
49
50#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
51pub struct BuildConfig {
52 pub chunk_size: usize,
59
60 pub slide_len: usize,
61
62 pub image_size: usize,
64
65 pub min_summary_len: usize,
68 pub max_summary_len: usize,
69
70 pub strict_file_reader: bool,
75
76 pub compression_threshold: u64,
78
79 pub compression_level: u32,
81
82 #[serde(default = "_true")]
84 pub summary_after_build: bool,
85}
86
87fn _true() -> bool {
88 true
89}
90
91impl Default for BuildConfig {
92 fn default() -> Self {
93 BuildConfig {
94 chunk_size: 4_000,
95 slide_len: 1_000,
96 image_size: 2_000,
97 min_summary_len: 200,
98 max_summary_len: 1000,
99 strict_file_reader: false,
100 compression_threshold: 2048,
101 compression_level: 3,
102 summary_after_build: true,
103 }
104 }
105}