Skip to main content

surrealdb_sql/statements/define/
mod.rs

1pub mod access;
2pub mod analyzer;
3pub mod api;
4pub mod bucket;
5pub mod config;
6pub mod database;
7pub mod event;
8pub mod field;
9pub mod function;
10pub mod index;
11pub mod model;
12pub mod module;
13pub mod namespace;
14pub mod param;
15pub mod sequence;
16pub mod table;
17pub mod user;
18
19pub use access::DefineAccessStatement;
20pub use analyzer::DefineAnalyzerStatement;
21pub use api::{ApiAction, DefineApiStatement};
22pub use bucket::DefineBucketStatement;
23pub use config::DefineConfigStatement;
24pub use database::DefineDatabaseStatement;
25pub use event::DefineEventStatement;
26pub use field::{DefineDefault, DefineFieldStatement};
27pub use function::DefineFunctionStatement;
28pub use index::DefineIndexStatement;
29pub use model::DefineModelStatement;
30pub use module::DefineModuleStatement;
31pub use namespace::DefineNamespaceStatement;
32pub use param::DefineParamStatement;
33pub use sequence::DefineSequenceStatement;
34use surrealdb_types::{SqlFormat, ToSql};
35pub use table::DefineTableStatement;
36pub use user::DefineUserStatement;
37
38#[derive(Clone, Debug, Default, PartialEq, Eq)]
39#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
40pub enum DefineKind {
41	#[default]
42	Default,
43	Overwrite,
44	IfNotExists,
45}
46
47#[derive(Clone, Debug, PartialEq, Eq)]
48#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
49pub enum DefineStatement {
50	Namespace(DefineNamespaceStatement),
51	Database(DefineDatabaseStatement),
52	Function(DefineFunctionStatement),
53	Analyzer(DefineAnalyzerStatement),
54	Param(DefineParamStatement),
55	Table(DefineTableStatement),
56	Event(DefineEventStatement),
57	Field(Box<DefineFieldStatement>),
58	Index(DefineIndexStatement),
59	User(DefineUserStatement),
60	#[cfg_attr(feature = "arbitrary", arbitrary(skip))]
61	Model(DefineModelStatement),
62	Access(DefineAccessStatement),
63	Config(DefineConfigStatement),
64	Api(DefineApiStatement),
65	Bucket(DefineBucketStatement),
66	Sequence(DefineSequenceStatement),
67	#[cfg_attr(feature = "arbitrary", arbitrary(skip))]
68	Module(DefineModuleStatement),
69}
70
71impl ToSql for DefineStatement {
72	fn fmt_sql(&self, f: &mut String, fmt: SqlFormat) {
73		match self {
74			Self::Namespace(v) => v.fmt_sql(f, fmt),
75			Self::Database(v) => v.fmt_sql(f, fmt),
76			Self::Function(v) => v.fmt_sql(f, fmt),
77			Self::User(v) => v.fmt_sql(f, fmt),
78			Self::Param(v) => v.fmt_sql(f, fmt),
79			Self::Table(v) => v.fmt_sql(f, fmt),
80			Self::Event(v) => v.fmt_sql(f, fmt),
81			Self::Field(v) => v.fmt_sql(f, fmt),
82			Self::Index(v) => v.fmt_sql(f, fmt),
83			Self::Analyzer(v) => v.fmt_sql(f, fmt),
84			Self::Model(v) => v.fmt_sql(f, fmt),
85			Self::Access(v) => v.fmt_sql(f, fmt),
86			Self::Config(v) => v.fmt_sql(f, fmt),
87			Self::Api(v) => v.fmt_sql(f, fmt),
88			Self::Bucket(v) => v.fmt_sql(f, fmt),
89			Self::Sequence(v) => v.fmt_sql(f, fmt),
90			Self::Module(v) => v.fmt_sql(f, fmt),
91		}
92	}
93}