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 is_required(&self) -> bool {
16 true
17 }
18
19 fn schemas(&self) -> Vec<SchemaDefinition> {
20 vec![
21 SchemaDefinition::new("logs", include_str!("../schema/log.sql")).with_required_columns(
22 vec![
23 "id".into(),
24 "timestamp".into(),
25 "level".into(),
26 "module".into(),
27 "message".into(),
28 ],
29 ),
30 SchemaDefinition::new("analytics_events", include_str!("../schema/analytics.sql"))
31 .with_required_columns(vec![
32 "id".into(),
33 "user_id".into(),
34 "event_type".into(),
35 "event_category".into(),
36 "severity".into(),
37 "timestamp".into(),
38 ]),
39 ]
40 }
41
42 fn migrations(&self) -> Vec<Migration> {
43 extension_migrations!()
44 }
45
46 fn dependencies(&self) -> Vec<&'static str> {
47 vec!["database", "users"]
48 }
49}
50
51register_extension!(LoggingExtension);