Skip to main content

surql_parser/upstream/sql/
group.rs

1use crate::upstream::sql::idiom::Idiom;
2#[derive(Clone, Debug, Default, PartialEq, Eq)]
3pub struct Groups(pub Vec<Group>);
4impl surrealdb_types::ToSql for Groups {
5	fn fmt_sql(&self, f: &mut String, fmt: surrealdb_types::SqlFormat) {
6		if self.0.is_empty() {
7			f.push_str("GROUP ALL");
8		} else {
9			f.push_str("GROUP BY ");
10			for (i, item) in self.0.iter().enumerate() {
11				if i > 0 {
12					fmt.write_separator(f);
13				}
14				item.fmt_sql(f, fmt);
15			}
16		}
17	}
18}
19#[derive(Clone, Debug, Default, PartialEq, Eq)]
20#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
21pub struct Group(
22	#[cfg_attr(
23        feature = "arbitrary",
24        arbitrary(with = crate::upstream::sql::arbitrary::basic_idiom)
25    )]
26	pub Idiom,
27);
28impl surrealdb_types::ToSql for Group {
29	fn fmt_sql(&self, f: &mut String, fmt: surrealdb_types::SqlFormat) {
30		self.0.fmt_sql(f, fmt);
31	}
32}