Skip to main content

surrealdb_sql/statements/alter/
module.rs

1use common::fmt::QuoteStr;
2use surrealdb_types::{SqlFormat, ToSql, write_sql};
3
4use super::AlterKind;
5use crate::{ModuleName, Permission};
6
7#[derive(Clone, Debug, Eq, PartialEq)]
8#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
9pub struct AlterModuleStatement {
10	pub name: ModuleName,
11	pub if_exists: bool,
12	pub comment: AlterKind<String>,
13	pub permissions: Option<Permission>,
14}
15
16impl ToSql for AlterModuleStatement {
17	fn fmt_sql(&self, f: &mut String, fmt: SqlFormat) {
18		write_sql!(f, fmt, "ALTER MODULE");
19		if self.if_exists {
20			write_sql!(f, fmt, " IF EXISTS");
21		}
22		write_sql!(f, fmt, " {}", self.name);
23
24		match self.comment {
25			AlterKind::Set(ref v) => write_sql!(f, fmt, " COMMENT {}", QuoteStr(v)),
26			AlterKind::Drop => f.push_str(" DROP COMMENT"),
27			AlterKind::None => {}
28		}
29
30		if let Some(ref p) = self.permissions {
31			write_sql!(f, fmt, " PERMISSIONS {}", p);
32		}
33	}
34}