Skip to main content

surrealdb_core/sql/
with.rs

1use std::fmt::{Display, Formatter, Result};
2
3#[derive(Clone, Debug, Eq, PartialEq, Hash)]
4#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
5pub enum With {
6	NoIndex,
7	Index(Vec<String>),
8}
9
10impl Display for With {
11	fn fmt(&self, f: &mut Formatter) -> Result {
12		f.write_str("WITH")?;
13		match self {
14			With::NoIndex => f.write_str(" NOINDEX"),
15			With::Index(i) => {
16				f.write_str(" INDEX ")?;
17				f.write_str(&i.join(","))
18			}
19		}
20	}
21}
22
23impl From<With> for crate::expr::With {
24	fn from(v: With) -> Self {
25		match v {
26			With::NoIndex => Self::NoIndex,
27			With::Index(i) => Self::Index(i),
28		}
29	}
30}
31impl From<crate::expr::With> for With {
32	fn from(v: crate::expr::With) -> Self {
33		match v {
34			crate::expr::With::NoIndex => Self::NoIndex,
35			crate::expr::With::Index(i) => Self::Index(i),
36		}
37	}
38}