elusion 8.3.0

Elusion is a modern DataFrame / Data Engineering / Data Analysis library that combines the familiarity of DataFrame operations (like those in PySpark, Pandas, and Polars) with the power of SQL query building. It provides flexible query construction without enforcing strict operation ordering, enabling developers to write intuitive and maintainable data transformations.
Documentation
use crate::prelude::*;

#[derive(Clone)]
pub struct NodeRegistry {
    pub(crate) resolved: HashMap<NodeName, ResolvedNode>,
}

impl NodeRegistry {
    pub fn new() -> Self {
        Self {
            resolved: HashMap::new(),
        }
    }

    pub fn insert(&mut self, node: ResolvedNode) {
        self.resolved.insert(node.name.clone(), node);
    }

    // These are what users call inside closures
    pub fn ref_source(&self, name: &str) -> ElusionResult<CustomDataFrame> {
        self.get(name, "source")
    }

    pub fn ref_bronze(&self, name: &str) -> ElusionResult<CustomDataFrame> {
        self.get(name, "bronze")
    }

    pub fn ref_silver(&self, name: &str) -> ElusionResult<CustomDataFrame> {
        self.get(name, "silver")
    }

    pub fn ref_gold(&self, name: &str) -> ElusionResult<CustomDataFrame> {
        self.get(name, "gold")
    }

    fn get(&self, name: &str, _layer_hint: &str) -> ElusionResult<CustomDataFrame> {
        self.resolved
            .get(name)
            .map(|n| n.df.clone())
            .ok_or_else(|| ElusionError::Custom(
                format!("Node '{}' not found in registry. Check name and execution order.", name)
            ))
    }
}