use std::fmt::Debug;
use std::ops::Deref;
use revision::revisioned;
use crate::expr::idiom::Idiom;
#[revisioned(revision = 1)]
#[derive(Clone, Debug, Default, Eq, PartialEq, Hash)]
pub struct Groups(pub Vec<Group>);
impl Groups {
pub fn read_only(&self) -> bool {
self.0.iter().all(|x| x.read_only())
}
}
impl Groups {
pub fn is_group_all_only(&self) -> bool {
self.0.is_empty()
}
pub fn len(&self) -> usize {
self.0.len()
}
pub fn is_empty(&self) -> bool {
self.0.is_empty()
}
}
#[revisioned(revision = 1)]
#[derive(Clone, Debug, Default, Eq, PartialEq, Hash)]
pub struct Group(pub Idiom);
impl Group {
pub fn read_only(&self) -> bool {
self.0.read_only()
}
}
impl Deref for Group {
type Target = Idiom;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl surrealdb_types::ToSql for Groups {
fn fmt_sql(&self, f: &mut String, fmt: surrealdb_types::SqlFormat) {
let sql_groups: crate::sql::Groups = self.clone().into();
sql_groups.fmt_sql(f, fmt);
}
}
impl surrealdb_types::ToSql for Group {
fn fmt_sql(&self, f: &mut String, fmt: surrealdb_types::SqlFormat) {
let sql_group: crate::sql::Group = self.clone().into();
sql_group.fmt_sql(f, fmt);
}
}