Skip to main content

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

1pub mod field;
2use surrealdb_types::{SqlFormat, ToSql};
3mod database;
4mod index;
5mod namespace;
6mod sequence;
7mod system;
8mod table;
9pub use database::AlterDatabaseStatement;
10pub use field::AlterFieldStatement;
11pub use index::AlterIndexStatement;
12pub use namespace::AlterNamespaceStatement;
13pub use sequence::AlterSequenceStatement;
14pub use system::AlterSystemStatement;
15pub use table::AlterTableStatement;
16#[derive(Clone, Debug, Eq, PartialEq, Default)]
17#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
18/// Tri‑state alteration helper used across `ALTER` AST nodes.
19///
20/// - `None`: leave the current value unchanged
21/// - `Set(T)`: set/replace the current value to `T`
22/// - `Drop`: remove/clear the current value
23pub enum AlterKind<T> {
24	#[default]
25	None,
26	Set(T),
27	Drop,
28}
29#[derive(Clone, Debug, Eq, PartialEq)]
30#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
31/// SQL AST for `ALTER` statements. Variants mirror specific resources.
32pub enum AlterStatement {
33	System(AlterSystemStatement),
34	Namespace(AlterNamespaceStatement),
35	Database(AlterDatabaseStatement),
36	Table(AlterTableStatement),
37	Index(AlterIndexStatement),
38	Sequence(AlterSequenceStatement),
39	Field(AlterFieldStatement),
40}
41impl ToSql for AlterStatement {
42	fn fmt_sql(&self, f: &mut String, fmt: SqlFormat) {
43		match self {
44			Self::System(v) => v.fmt_sql(f, fmt),
45			Self::Namespace(v) => v.fmt_sql(f, fmt),
46			Self::Database(v) => v.fmt_sql(f, fmt),
47			Self::Table(v) => v.fmt_sql(f, fmt),
48			Self::Index(v) => v.fmt_sql(f, fmt),
49			Self::Sequence(v) => v.fmt_sql(f, fmt),
50			Self::Field(v) => v.fmt_sql(f, fmt),
51		}
52	}
53}