systemprompt_logging/
extension.rs1use systemprompt_extension::prelude::*;
2
3#[derive(Debug, Clone, Copy, Default)]
4pub struct LoggingExtension;
5
6impl Extension for LoggingExtension {
7 fn metadata(&self) -> ExtensionMetadata {
8 ExtensionMetadata {
9 id: "logging",
10 name: "Logging",
11 version: env!("CARGO_PKG_VERSION"),
12 }
13 }
14
15 fn migration_weight(&self) -> u32 {
16 150
17 }
18
19 fn is_required(&self) -> bool {
20 true
21 }
22
23 fn schemas(&self) -> Vec<SchemaDefinition> {
24 vec![
25 SchemaDefinition::inline("logs", include_str!("../schema/log.sql"))
26 .with_required_columns(vec![
27 "id".into(),
28 "timestamp".into(),
29 "level".into(),
30 "module".into(),
31 "message".into(),
32 ]),
33 SchemaDefinition::inline("analytics_events", include_str!("../schema/analytics.sql"))
34 .with_required_columns(vec![
35 "id".into(),
36 "user_id".into(),
37 "event_type".into(),
38 "event_category".into(),
39 "severity".into(),
40 "timestamp".into(),
41 ]),
42 ]
43 }
44
45 fn migrations(&self) -> Vec<Migration> {
46 vec![Migration::new(
47 1,
48 "split_context_id",
49 include_str!("../schema/migrations/001_split_context_id.sql"),
50 )]
51 }
52
53 fn dependencies(&self) -> Vec<&'static str> {
54 vec!["database", "users"]
55 }
56}
57
58register_extension!(LoggingExtension);