use systemprompt_extension::prelude::*;
#[derive(Debug, Clone, Copy, Default)]
pub struct AnalyticsExtension;
impl Extension for AnalyticsExtension {
fn metadata(&self) -> ExtensionMetadata {
ExtensionMetadata {
id: "analytics",
name: "Analytics",
version: env!("CARGO_PKG_VERSION"),
}
}
fn schemas(&self) -> Vec<SchemaDefinition> {
vec![
SchemaDefinition::new(
"engagement_events",
include_str!("../schema/engagement_events.sql"),
)
.with_required_columns(vec![
"id".into(),
"session_id".into(),
"created_at".into(),
]),
SchemaDefinition::new(
"fingerprint_reputation",
include_str!("../schema/fingerprint_reputation.sql"),
)
.with_required_columns(vec!["fingerprint_hash".into()]),
SchemaDefinition::sql_only(include_str!("../schema/report_views.sql")),
]
}
fn dependencies(&self) -> Vec<&'static str> {
vec!["users"]
}
fn migrations(&self) -> Vec<Migration> {
extension_migrations!()
}
}
register_extension!(AnalyticsExtension);