surrealdb_expr/expr/convert/
expression.rs1use crate::sql::Literal;
7use crate::sql::expression::*;
8
9impl From<Expr> for crate::expr::Expr {
10 fn from(v: Expr) -> Self {
11 match v {
12 Expr::Literal(l) => crate::expr::Expr::Literal(l.into()),
13 Expr::Param(p) => crate::expr::Expr::Param(p.into()),
14 Expr::Idiom(i) => crate::expr::Expr::Idiom(i.into()),
15 Expr::Table(t) => crate::expr::Expr::Table(t.into()),
16 Expr::Mock(m) => crate::expr::Expr::Mock(m.into()),
17 Expr::Block(b) => crate::expr::Expr::Block(Box::new((*b).into())),
18 Expr::Constant(c) => crate::expr::Expr::Constant(c.into()),
19 Expr::Prefix {
20 op,
21 expr,
22 } => crate::expr::Expr::Prefix {
23 op: op.into(),
24 expr: Box::new((*expr).into()),
25 },
26 Expr::Postfix {
27 op,
28 expr,
29 } => crate::expr::Expr::Postfix {
30 op: op.into(),
31 expr: Box::new((*expr).into()),
32 },
33
34 Expr::Binary {
35 left,
36 op,
37 right,
38 } => crate::expr::Expr::Binary {
39 left: Box::new((*left).into()),
40 op: op.into(),
41 right: Box::new((*right).into()),
42 },
43 Expr::FunctionCall(f) => crate::expr::Expr::FunctionCall(Box::new((*f).into())),
44 Expr::Closure(s) => crate::expr::Expr::Closure(Box::new((*s).into())),
45 Expr::Break => crate::expr::Expr::Break,
46 Expr::Continue => crate::expr::Expr::Continue,
47 Expr::Return(e) => crate::expr::Expr::Return(Box::new((*e).into())),
48 Expr::Throw(e) => crate::expr::Expr::Throw(Box::new((*e).into())),
49 Expr::IfElse(s) => crate::expr::Expr::IfElse(Box::new((*s).into())),
50 Expr::Select(s) => crate::expr::Expr::Select(Box::new((*s).into())),
51 Expr::Create(s) => crate::expr::Expr::Create(Box::new((*s).into())),
52 Expr::Update(s) => crate::expr::Expr::Update(Box::new((*s).into())),
53 Expr::Delete(s) => crate::expr::Expr::Delete(Box::new((*s).into())),
54 Expr::Relate(s) => crate::expr::Expr::Relate(Box::new((*s).into())),
55 Expr::Insert(s) => crate::expr::Expr::Insert(Box::new((*s).into())),
56 Expr::Define(s) => crate::expr::Expr::Define(Box::new((*s).into())),
57 Expr::Remove(s) => crate::expr::Expr::Remove(Box::new((*s).into())),
58 Expr::Rebuild(s) => crate::expr::Expr::Rebuild(Box::new((*s).into())),
59 Expr::Upsert(s) => crate::expr::Expr::Upsert(Box::new((*s).into())),
60 Expr::Alter(s) => crate::expr::Expr::Alter(Box::new((*s).into())),
61 Expr::Info(s) => crate::expr::Expr::Info(Box::new((*s).into())),
62 Expr::Foreach(s) => crate::expr::Expr::Foreach(Box::new((*s).into())),
63 Expr::Let(s) => crate::expr::Expr::Let(Box::new((*s).into())),
64 Expr::Sleep(s) => crate::expr::Expr::Sleep(Box::new((*s).into())),
65 Expr::Explain {
66 format,
67 analyze,
68 statement,
69 } => crate::expr::Expr::Explain {
70 format: format.into(),
71 analyze,
72 statement: Box::new((*statement).into()),
73 },
74 }
75 }
76}
77
78impl From<crate::expr::Expr> for Expr {
79 fn from(v: crate::expr::Expr) -> Self {
80 match v {
81 crate::expr::Expr::Literal(l) => Expr::Literal(l.into()),
82 crate::expr::Expr::Param(p) => Expr::Param(p.into()),
83 crate::expr::Expr::Idiom(i) => Expr::Idiom(i.into()),
84 crate::expr::Expr::Table(t) => Expr::Table(t.into()),
85 crate::expr::Expr::Mock(m) => Expr::Mock(m.into()),
86 crate::expr::Expr::Block(b) => Expr::Block(Box::new((*b).into())),
87 crate::expr::Expr::Constant(c) => Expr::Constant(c.into()),
88 crate::expr::Expr::Prefix {
89 op,
90 expr,
91 } => Expr::Prefix {
92 op: op.into(),
93 expr: Box::new((*expr).into()),
94 },
95 crate::expr::Expr::Postfix {
96 expr,
97 op,
98 } => Expr::Postfix {
99 expr: Box::new((*expr).into()),
100 op: op.into(),
101 },
102
103 crate::expr::Expr::Binary {
104 left,
105 op,
106 right,
107 } => Expr::Binary {
108 left: Box::new((*left).into()),
109 op: op.into(),
110 right: Box::new((*right).into()),
111 },
112 crate::expr::Expr::FunctionCall(f) => Expr::FunctionCall(Box::new((*f).into())),
113 crate::expr::Expr::Closure(s) => Expr::Closure(Box::new((*s).into())),
114 crate::expr::Expr::Break => Expr::Break,
115 crate::expr::Expr::Continue => Expr::Continue,
116 crate::expr::Expr::Return(e) => Expr::Return(Box::new((*e).into())),
117 crate::expr::Expr::Throw(e) => Expr::Throw(Box::new((*e).into())),
118 crate::expr::Expr::IfElse(s) => Expr::IfElse(Box::new((*s).into())),
119 crate::expr::Expr::Select(s) => Expr::Select(Box::new((*s).into())),
120 crate::expr::Expr::Create(s) => Expr::Create(Box::new((*s).into())),
121 crate::expr::Expr::Update(s) => Expr::Update(Box::new((*s).into())),
122 crate::expr::Expr::Delete(s) => Expr::Delete(Box::new((*s).into())),
123 crate::expr::Expr::Relate(s) => Expr::Relate(Box::new((*s).into())),
124 crate::expr::Expr::Insert(s) => Expr::Insert(Box::new((*s).into())),
125 crate::expr::Expr::Define(s) => Expr::Define(Box::new((*s).into())),
126 crate::expr::Expr::Remove(s) => Expr::Remove(Box::new((*s).into())),
127 crate::expr::Expr::Rebuild(s) => Expr::Rebuild(Box::new((*s).into())),
128 crate::expr::Expr::Upsert(s) => Expr::Upsert(Box::new((*s).into())),
129 crate::expr::Expr::Alter(s) => Expr::Alter(Box::new((*s).into())),
130 crate::expr::Expr::Info(s) => Expr::Info(Box::new((*s).into())),
131 crate::expr::Expr::Foreach(s) => Expr::Foreach(Box::new((*s).into())),
132 crate::expr::Expr::Let(s) => Expr::Let(Box::new((*s).into())),
133 crate::expr::Expr::Sleep(s) => Expr::Sleep(Box::new((*s).into())),
134 crate::expr::Expr::Explain {
135 format,
136 analyze,
137 statement,
138 } => Expr::Explain {
139 format: format.into(),
140 analyze,
141 statement: Box::new((*statement).into()),
142 },
143 crate::expr::Expr::Match(_) => {
149 tracing::error!(
150 "Expr::Match reached the sql::Expr conversion; it must never enter a \
151 sql::Ast, the catalog, or Revisioned serialization"
152 );
153 debug_assert!(false, "Expr::Match must not be converted to sql::Expr");
154 Expr::Literal(Literal::None)
155 }
156 }
157 }
158}