surql_parser/upstream/sql/statements/alter/
index.rs1use 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}