systemprompt_runtime/startup_validation/
files_validator.rs1use 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}