systemprompt_users/
extension.rs1use systemprompt_extension::prelude::*;
2
3#[derive(Debug, Clone, Copy, Default)]
4pub struct UsersExtension;
5
6impl Extension for UsersExtension {
7 fn metadata(&self) -> ExtensionMetadata {
8 ExtensionMetadata {
9 id: "users",
10 name: "Users",
11 version: env!("CARGO_PKG_VERSION"),
12 }
13 }
14
15 fn migration_weight(&self) -> u32 {
16 10
17 }
18
19 fn is_required(&self) -> bool {
20 true
21 }
22
23 fn schemas(&self) -> Vec<SchemaDefinition> {
24 vec![
25 SchemaDefinition::inline("users", include_str!("../schema/users.sql"))
26 .with_required_columns(vec![
27 "id".into(),
28 "name".into(),
29 "email".into(),
30 "created_at".into(),
31 ]),
32 SchemaDefinition::inline("user_sessions", include_str!("../schema/user_sessions.sql"))
33 .with_required_columns(vec!["session_id".into(), "started_at".into()]),
34 SchemaDefinition::inline("banned_ips", include_str!("../schema/banned_ips.sql"))
35 .with_required_columns(vec![
36 "ip_address".into(),
37 "reason".into(),
38 "banned_at".into(),
39 ]),
40 SchemaDefinition::inline(
41 "session_analytics_views",
42 include_str!("../schema/session_analytics_views.sql"),
43 ),
44 SchemaDefinition::inline(
45 "referrer_analytics_views",
46 include_str!("../schema/referrer_analytics_views.sql"),
47 ),
48 SchemaDefinition::inline(
49 "bot_analytics_views",
50 include_str!("../schema/bot_analytics_views.sql"),
51 ),
52 ]
53 }
54
55 fn dependencies(&self) -> Vec<&'static str> {
56 vec![]
57 }
58}
59
60register_extension!(UsersExtension);