Skip to main content

surrealdb_expr/expr/convert/
ast.rs

1//! `sql` -> `expr` conversions for [`crate::sql::ast`].
2//!
3//! Lives in core rather than beside the AST: `surrealdb-sql` sits below
4//! core, so it cannot name `expr` types.
5
6use crate::expr;
7use crate::sql::ast::*;
8
9impl From<ExplainFormat> for crate::expr::ExplainFormat {
10	fn from(value: ExplainFormat) -> Self {
11		match value {
12			ExplainFormat::Text => crate::expr::ExplainFormat::Text,
13			ExplainFormat::Json => crate::expr::ExplainFormat::Json,
14		}
15	}
16}
17
18impl From<crate::expr::ExplainFormat> for ExplainFormat {
19	fn from(value: crate::expr::ExplainFormat) -> Self {
20		match value {
21			crate::expr::ExplainFormat::Text => ExplainFormat::Text,
22			crate::expr::ExplainFormat::Json => ExplainFormat::Json,
23		}
24	}
25}
26
27impl From<expr::LogicalPlan> for Ast {
28	fn from(value: expr::LogicalPlan) -> Self {
29		Ast {
30			expressions: value.expressions.into_iter().map(From::from).collect(),
31		}
32	}
33}
34
35impl From<Ast> for expr::LogicalPlan {
36	fn from(value: Ast) -> Self {
37		expr::LogicalPlan {
38			expressions: value.expressions.into_iter().map(From::from).collect(),
39		}
40	}
41}
42
43impl From<TopLevelExpr> for crate::expr::TopLevelExpr {
44	fn from(value: TopLevelExpr) -> Self {
45		match value {
46			TopLevelExpr::Begin => crate::expr::TopLevelExpr::Begin,
47			TopLevelExpr::Cancel => crate::expr::TopLevelExpr::Cancel,
48			TopLevelExpr::Commit => crate::expr::TopLevelExpr::Commit,
49			TopLevelExpr::Access(access_statement) => {
50				crate::expr::TopLevelExpr::Access(Box::new((*access_statement).into()))
51			}
52			TopLevelExpr::Kill(kill_statement) => {
53				crate::expr::TopLevelExpr::Kill(kill_statement.into())
54			}
55			TopLevelExpr::Live(live_statement) => {
56				crate::expr::TopLevelExpr::Live(Box::new((*live_statement).into()))
57			}
58			TopLevelExpr::Option(option_statement) => {
59				crate::expr::TopLevelExpr::Option(option_statement.into())
60			}
61			TopLevelExpr::Use(use_statement) => {
62				crate::expr::TopLevelExpr::Use(use_statement.into())
63			}
64			TopLevelExpr::Show(show_statement) => {
65				crate::expr::TopLevelExpr::Show(show_statement.into())
66			}
67			TopLevelExpr::Expr(expr) => crate::expr::TopLevelExpr::Expr(expr.into()),
68		}
69	}
70}
71
72impl From<crate::expr::TopLevelExpr> for TopLevelExpr {
73	fn from(value: crate::expr::TopLevelExpr) -> Self {
74		match value {
75			crate::expr::TopLevelExpr::Begin => TopLevelExpr::Begin,
76			crate::expr::TopLevelExpr::Cancel => TopLevelExpr::Cancel,
77			crate::expr::TopLevelExpr::Commit => TopLevelExpr::Commit,
78			crate::expr::TopLevelExpr::Access(access_statement) => {
79				TopLevelExpr::Access(Box::new((*access_statement).into()))
80			}
81			crate::expr::TopLevelExpr::Kill(kill_statement) => {
82				TopLevelExpr::Kill(kill_statement.into())
83			}
84			crate::expr::TopLevelExpr::Live(live_statement) => {
85				TopLevelExpr::Live(Box::new((*live_statement).into()))
86			}
87			crate::expr::TopLevelExpr::Option(option_statement) => {
88				TopLevelExpr::Option(option_statement.into())
89			}
90			crate::expr::TopLevelExpr::Use(use_statement) => {
91				TopLevelExpr::Use(use_statement.into())
92			}
93			crate::expr::TopLevelExpr::Show(show_statement) => {
94				TopLevelExpr::Show(show_statement.into())
95			}
96			crate::expr::TopLevelExpr::Expr(expr) => TopLevelExpr::Expr(expr.into()),
97		}
98	}
99}