Skip to main content

systemprompt_logging/models/
log_filter.rs

1use chrono::{DateTime, Utc};
2
3#[derive(Debug, Clone, Default)]
4pub struct LogFilter {
5    page: i32,
6    per_page: i32,
7    level: Option<String>,
8    module: Option<String>,
9    message: Option<String>,
10    since: Option<DateTime<Utc>>,
11}
12
13impl LogFilter {
14    #[must_use]
15    pub const fn new(page: i32, per_page: i32) -> Self {
16        Self {
17            page,
18            per_page,
19            level: None,
20            module: None,
21            message: None,
22            since: None,
23        }
24    }
25
26    #[must_use]
27    pub fn with_level(mut self, level: impl Into<String>) -> Self {
28        self.level = Some(level.into());
29        self
30    }
31
32    #[must_use]
33    pub fn with_module(mut self, module: impl Into<String>) -> Self {
34        self.module = Some(module.into());
35        self
36    }
37
38    #[must_use]
39    pub fn with_message(mut self, message: impl Into<String>) -> Self {
40        self.message = Some(message.into());
41        self
42    }
43
44    #[must_use]
45    pub const fn with_since(mut self, since: DateTime<Utc>) -> Self {
46        self.since = Some(since);
47        self
48    }
49
50    #[must_use]
51    pub const fn page(&self) -> i32 {
52        self.page
53    }
54
55    #[must_use]
56    pub const fn per_page(&self) -> i32 {
57        self.per_page
58    }
59
60    #[must_use]
61    pub fn level(&self) -> Option<&str> {
62        self.level.as_deref()
63    }
64
65    #[must_use]
66    pub fn module(&self) -> Option<&str> {
67        self.module.as_deref()
68    }
69
70    #[must_use]
71    pub fn message(&self) -> Option<&str> {
72        self.message.as_deref()
73    }
74
75    #[must_use]
76    pub const fn since(&self) -> Option<DateTime<Utc>> {
77        self.since
78    }
79}