use anyhow::Result;
use crate::models::api::FlowApiModel;
use crate::validate::ValidateTrait;
impl ValidateTrait for FlowApiModel {
fn validate(&self) -> Result<()> {
let valid_inputs = [
"query",
"query|file_path",
"query|project_path",
"query|line",
"query|prompt",
"query|image",
];
if let Some(input) = &self.input {
if !valid_inputs.contains(&input.as_str()) {
anyhow::bail!(
"Invalid api input: '{}'. Expected one of: {}",
input.as_str(),
valid_inputs.join(", ")
);
}
}
for (name, query_type) in &self.args {
if !valid_inputs.contains(&query_type.as_str()) {
anyhow::bail!(
"Invalid api args value for '{}': '{}'. Expected one of: {}",
name,
query_type,
valid_inputs.join(", ")
);
}
}
match &self.output {
crate::models::api::ApiTarget::Replace
| crate::models::api::ApiTarget::Clipboard
| crate::models::api::ApiTarget::Dialog => {}
}
Ok(())
}
}