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 15
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 dependencies(&self) -> Vec<&'static str> {
46 vec!["database", "users"]
47 }
48}
49
50register_extension!(LoggingExtension);