1use super::values::Value;
2
3#[derive(Clone, Default)]
5pub struct Row {
6 pub values: Vec<Box<dyn Value>>,
7}
8
9#[derive(Clone, Default)]
11pub struct Group {
12 pub rows: Vec<Row>,
13}
14
15impl Group {
16 pub fn is_empty(&self) -> bool {
18 self.rows.is_empty()
19 }
20
21 pub fn len(&self) -> usize {
23 self.rows.len()
24 }
25}
26
27#[derive(Default)]
29pub struct GitQLObject {
30 pub titles: Vec<String>,
31 pub groups: Vec<Group>,
32}
33
34impl GitQLObject {
35 pub fn flat(&mut self) {
37 let mut rows: Vec<Row> = vec![];
38 for group in &mut self.groups {
39 rows.append(&mut group.rows);
40 }
41
42 self.groups.clear();
43 self.groups.push(Group { rows })
44 }
45
46 pub fn is_empty(&self) -> bool {
48 self.groups.is_empty()
49 }
50
51 pub fn len(&self) -> usize {
53 self.groups.len()
54 }
55}