surrealdb_expr/expr/convert/
kind.rs1use crate::sql::kind::*;
7
8impl From<GeometryKind> for crate::expr::kind::GeometryKind {
9 fn from(v: GeometryKind) -> Self {
10 match v {
11 GeometryKind::Point => crate::expr::kind::GeometryKind::Point,
12 GeometryKind::Line => crate::expr::kind::GeometryKind::Line,
13 GeometryKind::Polygon => crate::expr::kind::GeometryKind::Polygon,
14 GeometryKind::MultiPoint => crate::expr::kind::GeometryKind::MultiPoint,
15 GeometryKind::MultiLine => crate::expr::kind::GeometryKind::MultiLine,
16 GeometryKind::MultiPolygon => crate::expr::kind::GeometryKind::MultiPolygon,
17 GeometryKind::Collection => crate::expr::kind::GeometryKind::Collection,
18 }
19 }
20}
21
22impl From<crate::expr::kind::GeometryKind> for GeometryKind {
23 fn from(v: crate::expr::kind::GeometryKind) -> Self {
24 match v {
25 crate::expr::kind::GeometryKind::Point => GeometryKind::Point,
26 crate::expr::kind::GeometryKind::Line => GeometryKind::Line,
27 crate::expr::kind::GeometryKind::Polygon => GeometryKind::Polygon,
28 crate::expr::kind::GeometryKind::MultiPoint => GeometryKind::MultiPoint,
29 crate::expr::kind::GeometryKind::MultiLine => GeometryKind::MultiLine,
30 crate::expr::kind::GeometryKind::MultiPolygon => GeometryKind::MultiPolygon,
31 crate::expr::kind::GeometryKind::Collection => GeometryKind::Collection,
32 }
33 }
34}
35
36impl From<Kind> for crate::expr::Kind {
37 fn from(v: Kind) -> Self {
38 match v {
39 Kind::Any => crate::expr::Kind::Any,
40 Kind::None => crate::expr::Kind::None,
41 Kind::Null => crate::expr::Kind::Null,
42 Kind::Bool => crate::expr::Kind::Bool,
43 Kind::Bytes => crate::expr::Kind::Bytes,
44 Kind::Datetime => crate::expr::Kind::Datetime,
45 Kind::Decimal => crate::expr::Kind::Decimal,
46 Kind::Duration => crate::expr::Kind::Duration,
47 Kind::Float => crate::expr::Kind::Float,
48 Kind::Int => crate::expr::Kind::Int,
49 Kind::Number => crate::expr::Kind::Number,
50 Kind::Object => crate::expr::Kind::Object,
51 Kind::String => crate::expr::Kind::String,
52 Kind::Uuid => crate::expr::Kind::Uuid,
53 Kind::Regex => crate::expr::Kind::Regex,
54 Kind::Table(tables) => {
55 crate::expr::Kind::Table(tables.into_iter().map(Into::into).collect())
56 }
57 Kind::Record(tables) => {
58 crate::expr::Kind::Record(tables.into_iter().map(Into::into).collect())
59 }
60 Kind::Geometry(geometries) => {
61 crate::expr::Kind::Geometry(geometries.into_iter().map(Into::into).collect())
62 }
63 Kind::Either(kinds) => {
64 crate::expr::Kind::Either(kinds.into_iter().map(Into::into).collect())
65 }
66 Kind::Set(k, l) => crate::expr::Kind::Set(Box::new(k.as_ref().clone().into()), l),
67 Kind::Array(k, l) => crate::expr::Kind::Array(Box::new(k.as_ref().clone().into()), l),
68 Kind::Function(args, ret) => crate::expr::Kind::Function(
69 args.map(|args| args.into_iter().map(Into::into).collect()),
70 ret.map(|ret| Box::new((*ret).into())),
71 ),
72 Kind::Range => crate::expr::Kind::Range,
73 Kind::Literal(l) => crate::expr::Kind::Literal(l.into()),
74 Kind::File(k) => crate::expr::Kind::File(k),
75 }
76 }
77}
78
79impl From<crate::expr::Kind> for Kind {
80 fn from(v: crate::expr::Kind) -> Self {
81 match v {
82 crate::expr::Kind::Any => Kind::Any,
83 crate::expr::Kind::None => Kind::None,
84 crate::expr::Kind::Null => Kind::Null,
85 crate::expr::Kind::Bool => Kind::Bool,
86 crate::expr::Kind::Bytes => Kind::Bytes,
87 crate::expr::Kind::Datetime => Kind::Datetime,
88 crate::expr::Kind::Decimal => Kind::Decimal,
89 crate::expr::Kind::Duration => Kind::Duration,
90 crate::expr::Kind::Float => Kind::Float,
91 crate::expr::Kind::Int => Kind::Int,
92 crate::expr::Kind::Number => Kind::Number,
93 crate::expr::Kind::Object => Kind::Object,
94 crate::expr::Kind::String => Kind::String,
95 crate::expr::Kind::Uuid => Kind::Uuid,
96 crate::expr::Kind::Regex => Kind::Regex,
97 crate::expr::Kind::Table(tables) => {
98 Kind::Table(tables.into_iter().map(Into::into).collect())
99 }
100 crate::expr::Kind::Record(tables) => {
101 Kind::Record(tables.into_iter().map(Into::into).collect())
102 }
103 crate::expr::Kind::Geometry(geometries) => {
104 Kind::Geometry(geometries.into_iter().map(Into::into).collect())
105 }
106 crate::expr::Kind::Either(kinds) => {
107 let kinds: Vec<Kind> = kinds.into_iter().map(Into::into).collect();
108 if kinds.is_empty() {
109 return Self::Either(vec![Self::Any]);
110 }
111 Self::Either(kinds)
112 }
113 crate::expr::Kind::Set(k, l) => Self::Set(Box::new((*k).into()), l),
114 crate::expr::Kind::Array(k, l) => Self::Array(Box::new((*k).into()), l),
115 crate::expr::Kind::Function(args, ret) => Self::Function(
116 args.map(|args| args.into_iter().map(Into::into).collect()),
117 ret.map(|ret| Box::new((*ret).into())),
118 ),
119 crate::expr::Kind::Range => Self::Range,
120 crate::expr::Kind::Literal(l) => Self::Literal(l.into()),
121 crate::expr::Kind::File(k) => Kind::File(k),
122 }
123 }
124}
125
126impl From<KindLiteral> for crate::expr::kind::KindLiteral {
127 fn from(v: KindLiteral) -> Self {
128 match v {
129 KindLiteral::String(s) => crate::expr::kind::KindLiteral::String(s),
130 KindLiteral::Integer(i) => crate::expr::kind::KindLiteral::Integer(i),
131 KindLiteral::Float(f) => crate::expr::kind::KindLiteral::Float(f),
132 KindLiteral::Decimal(d) => crate::expr::kind::KindLiteral::Decimal(d),
133 KindLiteral::Duration(d) => crate::expr::kind::KindLiteral::Duration(d.into()),
134 KindLiteral::Array(a) => {
135 crate::expr::kind::KindLiteral::Array(a.into_iter().map(Into::into).collect())
136 }
137 KindLiteral::Object(o) => crate::expr::kind::KindLiteral::Object(
138 o.into_iter().map(|(k, v)| (k, v.into())).collect(),
139 ),
140 KindLiteral::Bool(b) => crate::expr::kind::KindLiteral::Bool(b),
141 }
142 }
143}
144
145impl From<crate::expr::kind::KindLiteral> for KindLiteral {
146 fn from(v: crate::expr::kind::KindLiteral) -> Self {
147 match v {
148 crate::expr::kind::KindLiteral::String(s) => Self::String(s),
149 crate::expr::kind::KindLiteral::Integer(i) => Self::Integer(i),
150 crate::expr::kind::KindLiteral::Float(f) => Self::Float(f),
151 crate::expr::kind::KindLiteral::Decimal(d) => Self::Decimal(d),
152 crate::expr::kind::KindLiteral::Duration(d) => Self::Duration(d.into()),
153 crate::expr::kind::KindLiteral::Array(a) => {
154 Self::Array(a.into_iter().map(Into::into).collect())
155 }
156 crate::expr::kind::KindLiteral::Object(o) => {
157 Self::Object(o.into_iter().map(|(k, v)| (k, v.into())).collect())
158 }
159 crate::expr::kind::KindLiteral::Bool(b) => Self::Bool(b),
160 }
161 }
162}