Skip to main content

systemprompt_files/
extension.rs

1//! Extension registration for the files domain.
2//!
3//! Registers the `files`, `content_files`, and `ai_image_analytics` schemas
4//! with the platform extension framework and declares dependencies on the
5//! `users` and `content` extensions.
6//!
7//! Copyright (c) systemprompt.io — Business Source License 1.1.
8//! See <https://systemprompt.io> for licensing details.
9
10use systemprompt_extension::prelude::*;
11
12#[derive(Debug, Clone, Copy, Default)]
13pub struct FilesExtension;
14
15impl Extension for FilesExtension {
16    fn metadata(&self) -> ExtensionMetadata {
17        ExtensionMetadata {
18            id: "files",
19            name: "Files",
20            version: env!("CARGO_PKG_VERSION"),
21        }
22    }
23
24    fn schemas(&self) -> Vec<SchemaDefinition> {
25        vec![
26            SchemaDefinition::new("files", include_str!("../schema/files.sql"))
27                .with_required_columns(vec![
28                    "id".into(),
29                    "path".into(),
30                    "mime_type".into(),
31                    "created_at".into(),
32                ]),
33            SchemaDefinition::new("content_files", include_str!("../schema/content_files.sql"))
34                .with_required_columns(vec!["id".into(), "content_id".into(), "file_id".into()]),
35            SchemaDefinition::new(
36                "ai_image_analytics",
37                include_str!("../schema/ai_image_analytics.sql"),
38            ),
39        ]
40    }
41
42    fn dependencies(&self) -> Vec<&'static str> {
43        vec!["users", "content"]
44    }
45}
46
47register_extension!(FilesExtension);