Skip to main content

surrealdb_expr/expr/convert/
field.rs

1//! `sql` -> `expr` conversions for [`crate::sql::field`].
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::field::*;
7
8impl From<Fields> for crate::expr::field::Fields {
9	fn from(v: Fields) -> Self {
10		match v {
11			Fields::Value(x) => crate::expr::field::Fields::Value(Box::new((*x).into())),
12			Fields::Select(x) => {
13				crate::expr::field::Fields::Select(x.into_iter().map(From::from).collect())
14			}
15		}
16	}
17}
18
19impl From<crate::expr::field::Fields> for Fields {
20	fn from(v: crate::expr::field::Fields) -> Self {
21		match v {
22			crate::expr::field::Fields::Value(x) => Fields::Value(Box::new((*x).into())),
23			crate::expr::field::Fields::Select(x) => {
24				Fields::Select(x.into_iter().map(From::from).collect())
25			}
26		}
27	}
28}
29
30impl From<Field> for crate::expr::field::Field {
31	fn from(v: Field) -> Self {
32		match v {
33			Field::All => Self::All,
34			Field::Single(s) => crate::expr::field::Field::Single(s.into()),
35		}
36	}
37}
38
39impl From<crate::expr::field::Field> for Field {
40	fn from(v: crate::expr::field::Field) -> Self {
41		match v {
42			crate::expr::field::Field::All => Self::All,
43			crate::expr::field::Field::Single(s) => Self::Single(s.into()),
44		}
45	}
46}
47
48impl From<Selector> for crate::expr::field::Selector {
49	fn from(v: Selector) -> Self {
50		crate::expr::field::Selector {
51			expr: v.expr.into(),
52			alias: v.alias.map(Into::into),
53		}
54	}
55}
56
57impl From<crate::expr::field::Selector> for Selector {
58	fn from(v: crate::expr::field::Selector) -> Self {
59		Selector {
60			expr: v.expr.into(),
61			alias: v.alias.map(Into::into),
62		}
63	}
64}