systemprompt_logging/models/
log_filter.rs1use 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}