dm_database_sqllog2db/pipeline/
normalize_config.rs1use serde::Deserialize;
2
3#[derive(Debug, Deserialize, Clone)]
5pub struct NormalizeConfig {
6 #[serde(default = "default_true")]
8 pub enable: bool,
9 #[serde(default)]
14 pub placeholders: Vec<String>,
15}
16
17impl Default for NormalizeConfig {
18 fn default() -> Self {
19 Self {
20 enable: true,
21 placeholders: Vec::new(),
22 }
23 }
24}
25
26impl NormalizeConfig {
27 #[must_use]
32 pub fn placeholder_override(&self) -> Option<bool> {
33 let has_question = self.placeholders.iter().any(|p| p == "?");
34 let has_colon = self.placeholders.iter().any(|p| {
35 p.starts_with(':') && p[1..].chars().next().is_some_and(|c| c.is_ascii_digit())
36 });
37 match (has_question, has_colon) {
38 (true, false) => Some(false),
39 (false, true) => Some(true),
40 _ => None,
41 }
42 }
43}
44
45fn default_true() -> bool {
46 true
47}