datafusion_python/expr/
conditional_expr.rs1use crate::{errors::PyDataFusionResult, expr::PyExpr};
19use datafusion::logical_expr::conditional_expressions::CaseBuilder;
20use pyo3::prelude::*;
21
22#[pyclass(name = "CaseBuilder", module = "datafusion.expr", subclass)]
23pub struct PyCaseBuilder {
24 pub case_builder: CaseBuilder,
25}
26
27impl From<PyCaseBuilder> for CaseBuilder {
28 fn from(case_builder: PyCaseBuilder) -> Self {
29 case_builder.case_builder
30 }
31}
32
33impl From<CaseBuilder> for PyCaseBuilder {
34 fn from(case_builder: CaseBuilder) -> PyCaseBuilder {
35 PyCaseBuilder { case_builder }
36 }
37}
38
39#[pymethods]
40impl PyCaseBuilder {
41 fn when(&mut self, when: PyExpr, then: PyExpr) -> PyCaseBuilder {
42 PyCaseBuilder {
43 case_builder: self.case_builder.when(when.expr, then.expr),
44 }
45 }
46
47 fn otherwise(&mut self, else_expr: PyExpr) -> PyDataFusionResult<PyExpr> {
48 Ok(self.case_builder.otherwise(else_expr.expr)?.clone().into())
49 }
50
51 fn end(&mut self) -> PyDataFusionResult<PyExpr> {
52 Ok(self.case_builder.end()?.clone().into())
53 }
54}