Skip to main content

surrealdb_expr/expr/convert/
reference.rs

1//! `sql` -> `expr` conversions for [`crate::sql::reference`].
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::reference::*;
7
8impl From<Reference> for crate::expr::reference::Reference {
9	fn from(v: Reference) -> Self {
10		Self {
11			on_delete: v.on_delete.into(),
12		}
13	}
14}
15
16impl From<crate::expr::reference::Reference> for Reference {
17	fn from(v: crate::expr::reference::Reference) -> Self {
18		Self {
19			on_delete: v.on_delete.into(),
20		}
21	}
22}
23
24impl From<ReferenceDeleteStrategy> for crate::expr::reference::ReferenceDeleteStrategy {
25	fn from(v: ReferenceDeleteStrategy) -> Self {
26		match v {
27			ReferenceDeleteStrategy::Reject => {
28				crate::expr::reference::ReferenceDeleteStrategy::Reject
29			}
30			ReferenceDeleteStrategy::Ignore => {
31				crate::expr::reference::ReferenceDeleteStrategy::Ignore
32			}
33			ReferenceDeleteStrategy::Cascade => {
34				crate::expr::reference::ReferenceDeleteStrategy::Cascade
35			}
36			ReferenceDeleteStrategy::Unset => {
37				crate::expr::reference::ReferenceDeleteStrategy::Unset
38			}
39			ReferenceDeleteStrategy::Custom(v) => {
40				crate::expr::reference::ReferenceDeleteStrategy::Custom(v.into())
41			}
42		}
43	}
44}
45
46impl From<crate::expr::reference::ReferenceDeleteStrategy> for ReferenceDeleteStrategy {
47	fn from(v: crate::expr::reference::ReferenceDeleteStrategy) -> Self {
48		match v {
49			crate::expr::reference::ReferenceDeleteStrategy::Reject => {
50				ReferenceDeleteStrategy::Reject
51			}
52			crate::expr::reference::ReferenceDeleteStrategy::Ignore => {
53				ReferenceDeleteStrategy::Ignore
54			}
55			crate::expr::reference::ReferenceDeleteStrategy::Cascade => {
56				ReferenceDeleteStrategy::Cascade
57			}
58			crate::expr::reference::ReferenceDeleteStrategy::Unset => {
59				ReferenceDeleteStrategy::Unset
60			}
61			crate::expr::reference::ReferenceDeleteStrategy::Custom(v) => {
62				ReferenceDeleteStrategy::Custom(v.into())
63			}
64		}
65	}
66}