Skip to main content

surql_parser/upstream/sql/statements/define/config/
mod.rs

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