Skip to main content

surrealdb_sql/statements/alter/
config.rs

1use common::fmt::QuoteStr;
2use surrealdb_types::{SqlFormat, ToSql, write_sql};
3
4use super::AlterKind;
5use crate::statements::define::config::ConfigInner;
6
7#[derive(Clone, Debug, Eq, PartialEq)]
8#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
9/// AST node for `ALTER CONFIG`.
10pub struct AlterConfigStatement {
11	pub if_exists: bool,
12	pub inner: ConfigInner,
13	pub comment: AlterKind<String>,
14}
15
16impl Default for AlterConfigStatement {
17	fn default() -> Self {
18		Self {
19			if_exists: false,
20			inner: ConfigInner::GraphQL(Default::default()),
21			comment: AlterKind::None,
22		}
23	}
24}
25
26impl ToSql for AlterConfigStatement {
27	fn fmt_sql(&self, f: &mut String, fmt: SqlFormat) {
28		write_sql!(f, fmt, "ALTER CONFIG");
29		if self.if_exists {
30			write_sql!(f, fmt, " IF EXISTS");
31		}
32		f.push(' ');
33		self.inner.fmt_sql(f, fmt);
34
35		match self.comment {
36			AlterKind::Set(ref v) => write_sql!(f, fmt, " COMMENT {}", QuoteStr(v)),
37			AlterKind::Drop => f.push_str(" DROP COMMENT"),
38			AlterKind::None => {}
39		}
40	}
41}