Skip to main content

surql_parser/upstream/sql/statements/alter/
index.rs

1use crate::upstream::fmt::{EscapeKwFreeIdent, EscapeKwIdent, QuoteStr};
2use crate::upstream::sql::statements::alter::AlterKind;
3use surrealdb_types::{SqlFormat, ToSql, write_sql};
4#[derive(Clone, Debug, Default, Eq, PartialEq)]
5pub struct AlterIndexStatement {
6	pub name: String,
7	pub table: String,
8	pub if_exists: bool,
9	pub prepare_remove: bool,
10	pub comment: AlterKind<String>,
11}
12impl ToSql for AlterIndexStatement {
13	fn fmt_sql(&self, f: &mut String, fmt: SqlFormat) {
14		write_sql!(f, fmt, "ALTER INDEX");
15		if self.if_exists {
16			write_sql!(f, fmt, " IF EXISTS");
17		}
18		write_sql!(
19			f,
20			fmt,
21			" {} ON {}",
22			EscapeKwIdent(&self.name, &["IF"]),
23			EscapeKwFreeIdent(&self.table)
24		);
25		if self.prepare_remove {
26			write_sql!(f, fmt, " PREPARE REMOVE");
27		}
28		match self.comment {
29			AlterKind::Set(ref x) => write_sql!(f, fmt, " COMMENT {}", QuoteStr(x)),
30			AlterKind::Drop => write_sql!(f, fmt, " DROP COMMENT"),
31			AlterKind::None => {}
32		}
33	}
34}