pub mod actions;
mod conversion;
mod expr;
pub mod functions;
mod lineage;
mod model;
mod reference;
pub mod rules;
mod runtime_trait;
mod validate;
pub use model::{
parse_qualified_field, parse_qualified_field_with_interfaces, Dataset, QualifiedField, Row,
RuntimeInputs, RuntimeOutputs, RuntimeValue,
};
pub use reference::ReferenceRuntime;
pub use runtime_trait::Runtime;
use crate::compile::ExecutionPlan;
use crate::diagnostics::Diagnostic;
#[derive(Debug, Clone, Default, serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ExecuteResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub outputs: Option<RuntimeOutputs>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub diagnostics: Vec<Diagnostic>,
}
impl ExecuteResult {
#[must_use]
pub fn is_valid(&self) -> bool {
self.outputs.is_some() && !self.diagnostics.iter().any(|d| d.severity.is_error())
}
}
#[must_use]
pub fn execute(plan: &ExecutionPlan, inputs: &RuntimeInputs) -> ExecuteResult {
ReferenceRuntime.execute(plan, inputs)
}