Skip to main content

surrealdb_expr/expr/convert/record_id/
key.rs

1//! `sql` -> `expr` conversions for [`crate::sql::record_id::key`].
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::record_id::key::*;
7
8impl From<RecordIdKeyGen> for crate::expr::RecordIdKeyGen {
9	fn from(value: RecordIdKeyGen) -> Self {
10		match value {
11			RecordIdKeyGen::Rand => crate::expr::RecordIdKeyGen::Rand,
12			RecordIdKeyGen::Ulid => crate::expr::RecordIdKeyGen::Ulid,
13			RecordIdKeyGen::Uuid => crate::expr::RecordIdKeyGen::Uuid,
14		}
15	}
16}
17
18impl From<crate::expr::RecordIdKeyGen> for RecordIdKeyGen {
19	fn from(value: crate::expr::RecordIdKeyGen) -> Self {
20		match value {
21			crate::expr::RecordIdKeyGen::Rand => RecordIdKeyGen::Rand,
22			crate::expr::RecordIdKeyGen::Ulid => RecordIdKeyGen::Ulid,
23			crate::expr::RecordIdKeyGen::Uuid => RecordIdKeyGen::Uuid,
24		}
25	}
26}
27
28impl From<RecordIdKeyLit> for crate::expr::RecordIdKeyLit {
29	fn from(value: RecordIdKeyLit) -> Self {
30		match value {
31			RecordIdKeyLit::Number(x) => crate::expr::RecordIdKeyLit::Number(x),
32			RecordIdKeyLit::String(x) => crate::expr::RecordIdKeyLit::String(x),
33			RecordIdKeyLit::Uuid(x) => crate::expr::RecordIdKeyLit::Uuid(crate::val::Uuid(x)),
34			RecordIdKeyLit::Array(x) => {
35				crate::expr::RecordIdKeyLit::Array(x.into_iter().map(From::from).collect())
36			}
37			RecordIdKeyLit::Object(x) => {
38				crate::expr::RecordIdKeyLit::Object(x.into_iter().map(From::from).collect())
39			}
40			RecordIdKeyLit::Generate(x) => crate::expr::RecordIdKeyLit::Generate(x.into()),
41			RecordIdKeyLit::Range(x) => crate::expr::RecordIdKeyLit::Range(Box::new((*x).into())),
42		}
43	}
44}
45
46impl From<crate::expr::RecordIdKeyLit> for RecordIdKeyLit {
47	fn from(value: crate::expr::RecordIdKeyLit) -> Self {
48		match value {
49			crate::expr::RecordIdKeyLit::Number(x) => RecordIdKeyLit::Number(x),
50			crate::expr::RecordIdKeyLit::String(x) => RecordIdKeyLit::String(x),
51			crate::expr::RecordIdKeyLit::Uuid(uuid) => RecordIdKeyLit::Uuid(uuid.0),
52			crate::expr::RecordIdKeyLit::Array(exprs) => {
53				RecordIdKeyLit::Array(exprs.into_iter().map(From::from).collect())
54			}
55			crate::expr::RecordIdKeyLit::Object(items) => {
56				RecordIdKeyLit::Object(items.into_iter().map(From::from).collect())
57			}
58			crate::expr::RecordIdKeyLit::Generate(x) => RecordIdKeyLit::Generate(x.into()),
59			crate::expr::RecordIdKeyLit::Range(x) => RecordIdKeyLit::Range(Box::new((*x).into())),
60		}
61	}
62}