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