systemprompt_logging/trace/models/
log.rs1use chrono::{DateTime, Utc};
5use serde::{Deserialize, Serialize};
6use systemprompt_identifiers::{LogId, TraceId};
7
8#[derive(Debug, Clone)]
9pub struct LogSearchFilter {
10 pub pattern: String,
11 pub limit: i64,
12 pub since: Option<DateTime<Utc>>,
13 pub level: Option<String>,
14}
15
16impl LogSearchFilter {
17 pub const fn new(pattern: String, limit: i64) -> Self {
18 Self {
19 pattern,
20 limit,
21 since: None,
22 level: None,
23 }
24 }
25
26 pub const fn with_since(mut self, since: DateTime<Utc>) -> Self {
27 self.since = Some(since);
28 self
29 }
30
31 systemprompt_models::builder_methods! {
32 with_level(level) -> String,
33 }
34}
35
36#[derive(Debug, Clone, Serialize, Deserialize)]
37pub struct LogSearchItem {
38 pub id: LogId,
39 pub trace_id: TraceId,
40 pub timestamp: DateTime<Utc>,
41 pub level: String,
42 pub module: String,
43 pub message: String,
44 pub metadata: Option<String>,
45}
46
47#[derive(Debug, Clone, Serialize, Deserialize)]
48pub struct LevelCount {
49 pub level: String,
50 pub count: i64,
51}
52
53#[derive(Debug, Clone, Serialize, Deserialize)]
54pub struct ModuleCount {
55 pub module: String,
56 pub count: i64,
57}
58
59#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
60pub struct LogTimeRange {
61 pub earliest: Option<DateTime<Utc>>,
62 pub latest: Option<DateTime<Utc>>,
63}