Skip to main content

systemprompt_files/
extension.rs

1use systemprompt_extension::prelude::*;
2
3#[derive(Debug, Clone, Copy, Default)]
4pub struct FilesExtension;
5
6impl Extension for FilesExtension {
7    fn metadata(&self) -> ExtensionMetadata {
8        ExtensionMetadata {
9            id: "files",
10            name: "Files",
11            version: env!("CARGO_PKG_VERSION"),
12        }
13    }
14
15    fn migration_weight(&self) -> u32 {
16        50
17    }
18
19    fn schemas(&self) -> Vec<SchemaDefinition> {
20        vec![
21            SchemaDefinition::inline("files", include_str!("../schema/files.sql"))
22                .with_required_columns(vec![
23                    "id".into(),
24                    "filename".into(),
25                    "mime_type".into(),
26                    "created_at".into(),
27                ]),
28            SchemaDefinition::inline("content_files", include_str!("../schema/content_files.sql"))
29                .with_required_columns(vec!["id".into(), "content_id".into(), "file_id".into()]),
30            SchemaDefinition::inline(
31                "ai_image_analytics",
32                include_str!("../schema/ai_image_analytics.sql"),
33            ),
34        ]
35    }
36
37    fn dependencies(&self) -> Vec<&'static str> {
38        vec!["users", "content"]
39    }
40}
41
42register_extension!(FilesExtension);