surrealdb_core/sql/statements/define/
database.rs1use std::fmt::{self, Display};
2
3use super::DefineKind;
4use crate::sql::Ident;
5use crate::sql::changefeed::ChangeFeed;
6use crate::val::Strand;
7
8#[derive(Clone, Debug, Default, PartialEq, Eq)]
9#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
10pub struct DefineDatabaseStatement {
11 pub kind: DefineKind,
12 pub id: Option<u32>,
13 pub name: Ident,
14 pub comment: Option<Strand>,
15 pub changefeed: Option<ChangeFeed>,
16}
17
18impl Display for DefineDatabaseStatement {
19 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
20 write!(f, "DEFINE DATABASE")?;
21 match self.kind {
22 DefineKind::Default => {}
23 DefineKind::Overwrite => write!(f, " OVERWRITE")?,
24 DefineKind::IfNotExists => write!(f, " IF NOT EXISTS")?,
25 }
26 write!(f, " {}", self.name)?;
27 if let Some(ref v) = self.comment {
28 write!(f, " COMMENT {v}")?
29 }
30 if let Some(ref v) = self.changefeed {
31 write!(f, " {v}")?;
32 }
33 Ok(())
34 }
35}
36
37impl From<DefineDatabaseStatement> for crate::expr::statements::DefineDatabaseStatement {
38 fn from(v: DefineDatabaseStatement) -> Self {
39 crate::expr::statements::DefineDatabaseStatement {
40 kind: v.kind.into(),
41 id: v.id,
42 name: v.name.into(),
43 comment: v.comment,
44 changefeed: v.changefeed.map(Into::into),
45 }
46 }
47}
48
49impl From<crate::expr::statements::DefineDatabaseStatement> for DefineDatabaseStatement {
50 fn from(v: crate::expr::statements::DefineDatabaseStatement) -> Self {
51 DefineDatabaseStatement {
52 kind: v.kind.into(),
53 id: v.id,
54 name: v.name.into(),
55 comment: v.comment,
56 changefeed: v.changefeed.map(Into::into),
57 }
58 }
59}