surrealdb_expr/expr/statements/define/
user.rs1use surrealdb_types::{SqlFormat, ToSql};
2
3use super::DefineKind;
4use crate::expr::user::UserDuration;
5use crate::expr::{Base, Expr, Literal};
6use crate::iam::ScramCredential;
7
8#[derive(Clone, Debug, Eq, PartialEq, Hash)]
9pub struct DefineUserStatement {
10 pub kind: DefineKind,
11 pub name: Expr,
12 pub base: Base,
13 pub hash: String,
14 pub code: String,
15 pub roles: Vec<String>,
16 pub duration: UserDuration,
17 pub comment: Expr,
18 pub scram: Option<ScramCredential>,
21}
22
23impl Default for DefineUserStatement {
24 fn default() -> Self {
25 Self {
26 kind: DefineKind::Default,
27 name: Expr::Literal(Literal::None),
28 base: Base::Root,
29 hash: String::new(),
30 code: String::new(),
31 roles: vec![],
32 duration: UserDuration::default(),
33 comment: Expr::Literal(Literal::None),
34 scram: None,
35 }
36 }
37}
38
39impl ToSql for DefineUserStatement {
40 fn fmt_sql(&self, f: &mut String, fmt: SqlFormat) {
41 let stmt: crate::sql::statements::define::DefineUserStatement = self.clone().into();
42 stmt.fmt_sql(f, fmt);
43 }
44}