Skip to main content

surrealdb_sql/statements/alter/
mod.rs

1pub mod access;
2pub mod analyzer;
3pub mod api;
4pub mod bucket;
5pub mod config;
6pub mod event;
7pub mod field;
8pub mod function;
9pub mod module;
10use surrealdb_types::{SqlFormat, ToSql};
11pub mod database;
12pub mod index;
13pub mod param;
14pub mod sequence;
15pub mod user;
16
17pub mod namespace;
18pub mod system;
19pub mod table;
20
21pub use access::AlterAccessStatement;
22pub use analyzer::AlterAnalyzerStatement;
23pub use api::{AlterApiClause, AlterApiStatement};
24pub use bucket::AlterBucketStatement;
25pub use config::AlterConfigStatement;
26pub use database::AlterDatabaseStatement;
27pub use event::AlterEventStatement;
28pub use field::AlterFieldStatement;
29pub use function::AlterFunctionStatement;
30pub use index::AlterIndexStatement;
31pub use module::AlterModuleStatement;
32pub use namespace::AlterNamespaceStatement;
33pub use param::AlterParamStatement;
34pub use sequence::AlterSequenceStatement;
35pub use system::AlterSystemStatement;
36pub use table::AlterTableStatement;
37pub use user::AlterUserStatement;
38
39#[derive(Clone, Debug, Eq, PartialEq, Default)]
40#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
41/// Tri‑state alteration helper used across `ALTER` AST nodes.
42///
43/// - `None`: leave the current value unchanged
44/// - `Set(T)`: set/replace the current value to `T`
45/// - `Drop`: remove/clear the current value
46pub enum AlterKind<T> {
47	#[default]
48	None,
49	Set(T),
50	Drop,
51}
52
53#[derive(Clone, Debug, Eq, PartialEq)]
54#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
55/// SQL AST for `ALTER` statements. Variants mirror specific resources.
56pub enum AlterStatement {
57	System(AlterSystemStatement),
58	Namespace(AlterNamespaceStatement),
59	Database(AlterDatabaseStatement),
60	Table(AlterTableStatement),
61	Api(AlterApiStatement),
62	Event(AlterEventStatement),
63	Index(AlterIndexStatement),
64	Sequence(AlterSequenceStatement),
65	Field(Box<AlterFieldStatement>),
66	Param(AlterParamStatement),
67	Bucket(AlterBucketStatement),
68	Config(AlterConfigStatement),
69	Analyzer(AlterAnalyzerStatement),
70	Function(AlterFunctionStatement),
71	User(AlterUserStatement),
72	Access(AlterAccessStatement),
73	Module(AlterModuleStatement),
74}
75
76impl ToSql for AlterStatement {
77	fn fmt_sql(&self, f: &mut String, fmt: SqlFormat) {
78		match self {
79			Self::System(v) => v.fmt_sql(f, fmt),
80			Self::Namespace(v) => v.fmt_sql(f, fmt),
81			Self::Database(v) => v.fmt_sql(f, fmt),
82			Self::Table(v) => v.fmt_sql(f, fmt),
83			Self::Api(v) => v.fmt_sql(f, fmt),
84			Self::Event(v) => v.fmt_sql(f, fmt),
85			Self::Index(v) => v.fmt_sql(f, fmt),
86			Self::Sequence(v) => v.fmt_sql(f, fmt),
87			Self::Field(v) => v.fmt_sql(f, fmt),
88			Self::Param(v) => v.fmt_sql(f, fmt),
89			Self::Bucket(v) => v.fmt_sql(f, fmt),
90			Self::Config(v) => v.fmt_sql(f, fmt),
91			Self::Analyzer(v) => v.fmt_sql(f, fmt),
92			Self::Function(v) => v.fmt_sql(f, fmt),
93			Self::User(v) => v.fmt_sql(f, fmt),
94			Self::Access(v) => v.fmt_sql(f, fmt),
95			Self::Module(v) => v.fmt_sql(f, fmt),
96		}
97	}
98}