Skip to main content

surrealdb_sql/
view.rs

1use common::fmt::{EscapeKwFreeIdent, Fmt};
2use surrealdb_types::{SqlFormat, ToSql, write_sql};
3
4use crate::{Cond, Fields, Groups, TableName};
5
6#[derive(Clone, Debug, PartialEq, Eq)]
7pub struct View {
8	pub expr: Fields,
9	pub what: Vec<TableName>,
10	pub cond: Option<Cond>,
11	pub group: Option<Groups>,
12}
13
14impl ToSql for View {
15	fn fmt_sql(&self, f: &mut String, fmt: SqlFormat) {
16		write_sql!(
17			f,
18			fmt,
19			"AS SELECT {} FROM {}",
20			self.expr,
21			Fmt::comma_separated(self.what.iter().map(|x| EscapeKwFreeIdent(x.as_str())))
22		);
23		if let Some(ref v) = self.cond {
24			write_sql!(f, fmt, " {v}");
25		}
26		if let Some(ref v) = self.group {
27			write_sql!(f, fmt, " {v}");
28		}
29	}
30}