surql_parser/upstream/sql/statements/
rebuild.rs1use crate::upstream::fmt::{EscapeKwFreeIdent, EscapeKwIdent};
2use surrealdb_types::{SqlFormat, ToSql, write_sql};
3#[derive(Clone, Debug, Eq, PartialEq, Hash)]
4#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
5pub enum RebuildStatement {
6 Index(RebuildIndexStatement),
7}
8impl ToSql for RebuildStatement {
9 fn fmt_sql(&self, f: &mut String, fmt: SqlFormat) {
10 match self {
11 Self::Index(v) => v.fmt_sql(f, fmt),
12 }
13 }
14}
15#[derive(Clone, Debug, Default, Eq, PartialEq, PartialOrd, Hash)]
16#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
17pub struct RebuildIndexStatement {
18 pub name: String,
19 pub what: String,
20 pub if_exists: bool,
21 pub concurrently: bool,
22}
23impl ToSql for RebuildIndexStatement {
24 fn fmt_sql(&self, f: &mut String, fmt: SqlFormat) {
25 write_sql!(f, fmt, "REBUILD INDEX");
26 if self.if_exists {
27 write_sql!(f, fmt, " IF EXISTS");
28 }
29 write_sql!(
30 f,
31 fmt,
32 " {} ON {}",
33 EscapeKwIdent(&self.name, &["IF"]),
34 EscapeKwFreeIdent(&self.what)
35 );
36 if self.concurrently {
37 write_sql!(f, fmt, " CONCURRENTLY");
38 }
39 }
40}