use crate::engine::Engine;
use crate::error::{ApplicationError, ApplicationResult};
use crate::infrastructure::polars::{checks, kind::PolarsKind};
use crate::report::Report;
use crate::spec::Spec;
use polars::prelude::*;
pub struct EnginePolarsDataFrame;
impl Engine for EnginePolarsDataFrame {
type Dataset = DataFrame;
type Kind = PolarsKind;
fn execute(
&self,
dataset: &Self::Dataset,
spec: &Spec<Self::Kind>,
) -> ApplicationResult<Report> {
let violations = checks::run_all(dataset, spec.invariants())
.map_err(|e| ApplicationError::engine_failure(e.to_string()))?;
let mut report = Report::new();
report.extend(violations);
Ok(report)
}
}