support_kit/logs/
log_level_config.rs1use serde::{Deserialize, Serialize};
2
3use super::LogLevel;
4
5#[derive(Clone, Debug, Default, Serialize, Deserialize, PartialEq)]
6#[serde(untagged)]
7pub enum LogLevelConfig {
8 #[default]
9 Undefined,
10 Simple(LogLevel),
11 Complex {
12 min: LogLevel,
13 max: LogLevel,
14 },
15}
16
17impl LogLevelConfig {
18 pub fn range(&self) -> std::ops::Range<LogLevel> {
20 match self {
21 Self::Simple(level) => *level..*level,
22 Self::Complex { min, max } => *min..*max,
23 Self::Undefined => LogLevel::default()..LogLevel::default(),
24 }
25 }
26
27 pub fn min_level(&self) -> LogLevel {
29 match self {
30 Self::Simple(level) => *level,
31 Self::Complex { min, .. } => *min,
32 Self::Undefined => LogLevel::default(),
33 }
34 }
35
36 pub fn max_level(&self) -> LogLevel {
38 match self {
39 Self::Simple(level) => *level,
40 Self::Complex { max, .. } => *max,
41 Self::Undefined => LogLevel::default(),
42 }
43 }
44}
45
46impl From<LogLevel> for LogLevelConfig {
47 fn from(level: LogLevel) -> Self {
48 Self::Simple(level)
49 }
50}
51
52impl From<(LogLevel, LogLevel)> for LogLevelConfig {
53 fn from(levels: (LogLevel, LogLevel)) -> Self {
54 Self::Complex {
55 min: levels.0,
56 max: levels.1,
57 }
58 }
59}
60
61impl From<std::ops::Range<LogLevel>> for LogLevelConfig {
62 fn from(range: std::ops::Range<LogLevel>) -> Self {
63 Self::Complex {
64 min: range.start,
65 max: range.end,
66 }
67 }
68}