Skip to main content

surrealdb_sql/statements/define/config/
mod.rs

1pub mod api;
2pub mod defaults;
3use surrealdb_types::{SqlFormat, ToSql};
4pub mod graphql;
5
6use api::ApiConfig;
7use defaults::DefaultConfig;
8pub use graphql::GraphQLConfig;
9
10use super::DefineKind;
11
12#[derive(Clone, Debug, PartialEq, Eq)]
13#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
14pub struct DefineConfigStatement {
15	pub kind: DefineKind,
16	pub inner: ConfigInner,
17}
18
19#[derive(Clone, Debug, PartialEq, Eq)]
20#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
21pub enum ConfigInner {
22	GraphQL(GraphQLConfig),
23	Api(ApiConfig),
24	Default(DefaultConfig),
25}
26
27impl ToSql for DefineConfigStatement {
28	fn fmt_sql(&self, f: &mut String, fmt: SqlFormat) {
29		f.push_str("DEFINE CONFIG");
30		match self.kind {
31			DefineKind::Default => {}
32			DefineKind::Overwrite => f.push_str(" OVERWRITE"),
33			DefineKind::IfNotExists => f.push_str(" IF NOT EXISTS"),
34		}
35
36		f.push(' ');
37		self.inner.fmt_sql(f, fmt);
38	}
39}
40
41impl ToSql for ConfigInner {
42	fn fmt_sql(&self, f: &mut String, fmt: SqlFormat) {
43		match &self {
44			ConfigInner::GraphQL(v) => v.fmt_sql(f, fmt),
45			ConfigInner::Api(v) => {
46				f.push_str("API");
47				v.fmt_sql(f, fmt);
48			}
49			ConfigInner::Default(v) => v.fmt_sql(f, fmt),
50		}
51	}
52}