Skip to main content

surrealdb_expr/expr/convert/
data.rs

1//! `sql` -> `expr` conversions for [`crate::sql::data`].
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::sql::data::*;
7
8impl From<Assignment> for crate::expr::data::Assignment {
9	fn from(value: Assignment) -> Self {
10		crate::expr::data::Assignment {
11			place: value.place.into(),
12			operator: value.operator.into(),
13			value: value.value.into(),
14		}
15	}
16}
17
18impl From<crate::expr::data::Assignment> for Assignment {
19	fn from(value: crate::expr::data::Assignment) -> Self {
20		Assignment {
21			place: value.place.into(),
22			operator: value.operator.into(),
23			value: value.value.into(),
24		}
25	}
26}
27
28impl From<Data> for crate::expr::Data {
29	fn from(v: Data) -> Self {
30		match v {
31			Data::EmptyExpression => Self::EmptyExpression,
32			Data::SetExpression(v) => Self::SetExpression(v.into_iter().map(Into::into).collect()),
33			Data::UnsetExpression(v) => {
34				Self::UnsetExpression(v.into_iter().map(Into::into).collect())
35			}
36			Data::PatchExpression(v) => Self::PatchExpression(v.into()),
37			Data::MergeExpression(v) => Self::MergeExpression(v.into()),
38			Data::ReplaceExpression(v) => Self::ReplaceExpression(v.into()),
39			Data::ContentExpression(v) => Self::ContentExpression(v.into()),
40			Data::SingleExpression(v) => Self::SingleExpression(v.into()),
41			Data::ValuesExpression(v) => Self::ValuesExpression(
42				v.into_iter()
43					.map(|v| v.into_iter().map(|(a, b)| (a.into(), b.into())).collect())
44					.collect(),
45			),
46			Data::UpdateExpression(v) => {
47				Self::UpdateExpression(v.into_iter().map(Into::into).collect())
48			}
49		}
50	}
51}
52
53impl From<crate::expr::Data> for Data {
54	fn from(v: crate::expr::Data) -> Self {
55		match v {
56			crate::expr::Data::EmptyExpression => Self::EmptyExpression,
57			crate::expr::Data::SetExpression(v) => {
58				Self::SetExpression(v.into_iter().map(Into::into).collect())
59			}
60			crate::expr::Data::UnsetExpression(v) => {
61				Self::UnsetExpression(v.into_iter().map(Into::into).collect())
62			}
63			crate::expr::Data::PatchExpression(v) => Self::PatchExpression(v.into()),
64			crate::expr::Data::MergeExpression(v) => Self::MergeExpression(v.into()),
65			crate::expr::Data::ReplaceExpression(v) => Self::ReplaceExpression(v.into()),
66			crate::expr::Data::ContentExpression(v) => Self::ContentExpression(v.into()),
67			crate::expr::Data::SingleExpression(v) => Self::SingleExpression(v.into()),
68			crate::expr::Data::ValuesExpression(v) => Self::ValuesExpression(
69				v.into_iter()
70					.map(|v| v.into_iter().map(|(a, b)| (a.into(), b.into())).collect())
71					.collect(),
72			),
73			crate::expr::Data::UpdateExpression(v) => {
74				Self::UpdateExpression(v.into_iter().map(Into::into).collect())
75			}
76		}
77	}
78}