use crate::{SecretSpec, SecretsCore, SecretsError};
pub struct SecretValidationResult {
pub missing: Vec<&'static str>,
pub present: Vec<&'static str>,
}
impl SecretsCore {
pub async fn validate_specs_at_prefix(
&self,
base_prefix: &str,
specs: &[SecretSpec],
) -> Result<SecretValidationResult, SecretsError> {
let mut missing = Vec::new();
let mut present = Vec::new();
for spec in specs {
let uri = format!("{base}configs/{name}", base = base_prefix, name = spec.name);
match self.get_bytes(&uri).await {
Ok(bytes) if !bytes.is_empty() => present.push(spec.name),
_ => missing.push(spec.name),
}
}
Ok(SecretValidationResult { missing, present })
}
}