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