surql_parser/upstream/sql/
with.rs1use 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}