Skip to main content

surrealdb_expr/expr/convert/statements/
live.rs

1//! `sql` -> `expr` conversions for [`crate::sql::statements::live`].
2//!
3//! Lives in core rather than beside the AST: `surrealdb-sql` sits below
4//! core, so it cannot name `expr` types.
5
6use uuid::Uuid;
7
8use crate::sql::statements::live::*;
9
10impl From<LiveFields> for crate::expr::statements::LiveFields {
11	fn from(v: LiveFields) -> Self {
12		match v {
13			LiveFields::Diff => crate::expr::statements::LiveFields::Diff,
14			LiveFields::Select(fields) => {
15				crate::expr::statements::LiveFields::Select(fields.into())
16			}
17		}
18	}
19}
20
21impl From<crate::expr::statements::LiveFields> for LiveFields {
22	fn from(v: crate::expr::statements::LiveFields) -> Self {
23		match v {
24			crate::expr::statements::LiveFields::Diff => LiveFields::Diff,
25			crate::expr::statements::LiveFields::Select(fields) => {
26				LiveFields::Select(fields.into())
27			}
28		}
29	}
30}
31
32impl From<LiveStatement> for crate::expr::statements::LiveStatement {
33	fn from(v: LiveStatement) -> Self {
34		crate::expr::statements::LiveStatement {
35			id: Uuid::new_v4(),
36			node: Uuid::new_v4(),
37			fields: v.fields.into(),
38			what: v.what.into(),
39			cond: v.cond.map(Into::into),
40			fetch: v.fetch.map(Into::into),
41		}
42	}
43}
44
45impl From<crate::expr::statements::LiveStatement> for LiveStatement {
46	fn from(v: crate::expr::statements::LiveStatement) -> Self {
47		LiveStatement {
48			fields: v.fields.into(),
49			what: v.what.into(),
50			cond: v.cond.map(Into::into),
51			fetch: v.fetch.map(Into::into),
52		}
53	}
54}