use crate::pipeline::PipelineNode;
use crate::registry::NodeRegistry;
use super::node_outputs::CountKeys;
pub(super) fn count_keys_for(nodes: &[PipelineNode], registry: &NodeRegistry) -> CountKeys {
let mut keys = CountKeys::new();
collect(nodes, registry, &mut keys);
keys
}
fn collect(nodes: &[PipelineNode], registry: &NodeRegistry, keys: &mut CountKeys) {
for node in nodes {
if let Some(children) = &node.children {
collect(children, registry, keys);
}
let counted = registry
.resolve(&node.node_type, &node.params)
.map(|p| p.count_keys())
.unwrap_or_default();
if !counted.is_empty() {
keys.insert(node.id.clone(), counted);
}
}
}