use crate::error::Result;
use crate::distributed::config::DistributedConfig;
use crate::distributed::execution::{ExecutionEngine, ExecutionContext};
pub struct DataFusionEngine {
initialized: bool,
}
impl DataFusionEngine {
pub fn new() -> Self {
Self {
initialized: false,
}
}
}
impl Default for DataFusionEngine {
fn default() -> Self {
Self::new()
}
}
impl ExecutionEngine for DataFusionEngine {
fn initialize(&mut self, _config: &DistributedConfig) -> Result<()> {
self.initialized = true;
Ok(())
}
fn is_initialized(&self) -> bool {
self.initialized
}
fn create_context(&self, config: &DistributedConfig) -> Result<Box<dyn ExecutionContext>> {
if !self.initialized {
return Err(crate::error::Error::InvalidOperation(
"Engine is not initialized".to_string()
));
}
Ok(Box::new(super::DataFusionContext::new(config.clone())))
}
}