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