Skip to main content

systemprompt_logging/
extension.rs

1use 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::new("logs", include_str!("../schema/log.sql")).with_required_columns(
26                vec![
27                    "id".into(),
28                    "timestamp".into(),
29                    "level".into(),
30                    "module".into(),
31                    "message".into(),
32                ],
33            ),
34            SchemaDefinition::new("analytics_events", include_str!("../schema/analytics.sql"))
35                .with_required_columns(vec![
36                    "id".into(),
37                    "user_id".into(),
38                    "event_type".into(),
39                    "event_category".into(),
40                    "severity".into(),
41                    "timestamp".into(),
42                ]),
43        ]
44    }
45
46    fn migrations(&self) -> Vec<Migration> {
47        vec![Migration::new(
48            1,
49            "split_context_id",
50            include_str!("../schema/migrations/001_split_context_id.sql"),
51        )]
52    }
53
54    fn dependencies(&self) -> Vec<&'static str> {
55        vec!["database", "users"]
56    }
57}
58
59register_extension!(LoggingExtension);