surrealdb_expr/expr/
reference.rs1use surrealdb_types::{SqlFormat, ToSql};
2
3use super::Value;
4use super::statements::info::InfoStructure;
5use crate::expr::Expr;
6
7#[derive(Clone, Debug, Eq, PartialEq, Hash)]
8pub struct Reference {
9 pub on_delete: ReferenceDeleteStrategy,
10}
11
12impl ToSql for Reference {
13 fn fmt_sql(&self, f: &mut String, sql_fmt: SqlFormat) {
14 let sql_reference: crate::sql::reference::Reference = self.clone().into();
15 sql_reference.fmt_sql(f, sql_fmt);
16 }
17}
18
19impl InfoStructure for Reference {
20 fn structure(self) -> Value {
21 map! {
22 "on_delete" => self.on_delete.structure(),
23 }
24 .into()
25 }
26}
27
28#[derive(Clone, Debug, Eq, PartialEq, Hash)]
29pub enum ReferenceDeleteStrategy {
30 Reject,
31 Ignore,
32 Cascade,
33 Unset,
34 Custom(Expr),
35}
36
37impl ToSql for ReferenceDeleteStrategy {
38 fn fmt_sql(&self, f: &mut String, sql_fmt: SqlFormat) {
39 let sql_reference_delete_strategy: crate::sql::reference::ReferenceDeleteStrategy =
40 self.clone().into();
41 sql_reference_delete_strategy.fmt_sql(f, sql_fmt);
42 }
43}
44
45impl InfoStructure for ReferenceDeleteStrategy {
46 fn structure(self) -> Value {
47 self.to_sql().into()
48 }
49}