use super::constants::MAX_NUM_RESULTS;
use super::input::WebSearchInput;
pub struct ValidationResult {
pub result: bool,
pub message: Option<String>,
pub error_code: Option<u32>,
}
pub fn validate_input(input: &WebSearchInput) -> ValidationResult {
if input.query.trim().is_empty() {
return ValidationResult {
result: false,
message: Some("query must not be empty".to_string()),
error_code: Some(1001),
};
}
if let Some(num_results) = input.num_results {
if num_results == 0 || num_results > MAX_NUM_RESULTS {
return ValidationResult {
result: false,
message: Some(format!(
"num_results must be between 1 and {} (got {})",
MAX_NUM_RESULTS, num_results
)),
error_code: Some(1002),
};
}
}
if let Some(context_max_characters) = input.context_max_characters {
if context_max_characters == 0 {
return ValidationResult {
result: false,
message: Some("context_max_characters must be greater than 0".to_string()),
error_code: Some(1003),
};
}
}
ValidationResult {
result: true,
message: None,
error_code: None,
}
}