datafusion_python/expr/
drop_table.rs1use std::fmt::{self, Display, Formatter};
19
20use datafusion::logical_expr::logical_plan::DropTable;
21use pyo3::{prelude::*, IntoPyObjectExt};
22
23use crate::sql::logical::PyLogicalPlan;
24
25use super::logical_node::LogicalNode;
26
27#[pyclass(name = "DropTable", module = "datafusion.expr", subclass)]
28#[derive(Clone)]
29pub struct PyDropTable {
30 drop: DropTable,
31}
32
33impl From<PyDropTable> for DropTable {
34 fn from(drop: PyDropTable) -> Self {
35 drop.drop
36 }
37}
38
39impl From<DropTable> for PyDropTable {
40 fn from(drop: DropTable) -> PyDropTable {
41 PyDropTable { drop }
42 }
43}
44
45impl Display for PyDropTable {
46 fn fmt(&self, f: &mut Formatter) -> fmt::Result {
47 write!(
48 f,
49 "DropTable
50 name: {:?}
51 if_exists: {:?}
52 schema: {:?}",
53 &self.drop.name, &self.drop.if_exists, &self.drop.schema,
54 )
55 }
56}
57
58#[pymethods]
59impl PyDropTable {
60 fn name(&self) -> PyResult<String> {
61 Ok(self.drop.name.to_string())
62 }
63
64 fn input(&self) -> PyResult<Vec<PyLogicalPlan>> {
65 Ok(Self::inputs(self))
66 }
67
68 fn if_exists(&self) -> bool {
69 self.drop.if_exists
70 }
71
72 fn __repr__(&self) -> PyResult<String> {
73 Ok(format!("DropTable({})", self))
74 }
75
76 fn __name__(&self) -> PyResult<String> {
77 Ok("DropTable".to_string())
78 }
79}
80
81impl LogicalNode for PyDropTable {
82 fn inputs(&self) -> Vec<PyLogicalPlan> {
83 vec![]
84 }
85
86 fn to_variant<'py>(&self, py: Python<'py>) -> PyResult<Bound<'py, PyAny>> {
87 self.clone().into_bound_py_any(py)
88 }
89}