Skip to main content

surql_parser/upstream/sql/
with.rs

1use crate::upstream::fmt::{EscapeKwFreeIdent, Fmt};
2use surrealdb_types::{SqlFormat, ToSql, write_sql};
3#[derive(Clone, Debug, Eq, PartialEq, Hash)]
4#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
5pub enum With {
6	NoIndex,
7	Index(
8		#[cfg_attr(
9            feature = "arbitrary",
10            arbitrary(with = crate::upstream::sql::arbitrary::atleast_one)
11        )]
12		Vec<String>,
13	),
14}
15impl ToSql for With {
16	fn fmt_sql(&self, f: &mut String, fmt: SqlFormat) {
17		f.push_str("WITH");
18		match self {
19			With::NoIndex => f.push_str(" NOINDEX"),
20			With::Index(i) => {
21				f.push_str(" INDEX ");
22				write_sql!(
23					f,
24					fmt,
25					"{}",
26					Fmt::comma_separated(i.iter().map(|x| EscapeKwFreeIdent(x)))
27				);
28			}
29		}
30	}
31}