Skip to main content

systemprompt_runtime/startup_validation/
files_validator.rs

1use systemprompt_files::FilesConfig;
2use systemprompt_traits::validation_report::ValidationError;
3use systemprompt_traits::{ConfigProvider, ValidationReport};
4
5#[derive(Debug, Default, Clone, Copy)]
6pub struct FilesConfigValidator {
7    initialized: bool,
8}
9
10impl FilesConfigValidator {
11    pub fn new() -> Self {
12        Self::default()
13    }
14}
15
16impl systemprompt_traits::DomainConfig for FilesConfigValidator {
17    fn domain_id(&self) -> &'static str {
18        "files"
19    }
20
21    fn priority(&self) -> u32 {
22        5
23    }
24
25    fn load(
26        &mut self,
27        _config: &dyn ConfigProvider,
28    ) -> Result<(), systemprompt_traits::DomainConfigError> {
29        self.initialized = FilesConfig::get_optional().is_some();
30        Ok(())
31    }
32
33    fn validate(&self) -> Result<ValidationReport, systemprompt_traits::DomainConfigError> {
34        let mut report = ValidationReport::new("files");
35
36        let Some(files_config) = FilesConfig::get_optional() else {
37            return Ok(report);
38        };
39
40        let errors = files_config.validate_storage_structure();
41        for error_msg in errors {
42            report
43                .add_error(ValidationError::new("storage", &error_msg).with_suggestion(
44                    "Ensure static files are copied to storage during deployment",
45                ));
46        }
47
48        Ok(report)
49    }
50}