surrealdb_expr/expr/statements/
set.rs1use surrealdb_cnf::PROTECTED_PARAM_NAMES;
2use surrealdb_strand::Strand;
3use surrealdb_types::{SqlFormat, ToSql};
4
5use crate::expr::{Expr, Kind};
6
7#[derive(Clone, Debug, Eq, PartialEq, Hash)]
8pub struct SetStatement {
9 pub name: Strand,
10 pub what: Expr,
11 pub kind: Option<Kind>,
12}
13
14impl SetStatement {
15 pub fn read_only(&self) -> bool {
17 self.what.read_only()
18 }
19
20 pub fn is_protected_set(&self) -> bool {
22 PROTECTED_PARAM_NAMES.contains(&self.name.as_str())
23 }
24}
25
26impl ToSql for SetStatement {
27 fn fmt_sql(&self, f: &mut String, fmt: SqlFormat) {
28 let sql_stmt: crate::sql::statements::SetStatement = self.clone().into();
29 sql_stmt.fmt_sql(f, fmt);
30 }
31}
32
33#[cfg(test)]
34mod tests {
35 use surrealdb_types::ToSql;
36
37 use crate::syn;
38
39 #[test]
40 fn check_type() {
41 let query = syn::expr("LET $param = 5").unwrap();
42 assert_eq!(query.to_sql(), "LET $param = 5");
43
44 let query = syn::expr("LET $param: number = 5").unwrap();
45 assert_eq!(query.to_sql(), "LET $param: number = 5");
46 }
47}