(self)
| 80 | } |
| 81 | |
| 82 | pub fn build(self) -> DatabaseTemplate { |
| 83 | let fields = self.fields; |
| 84 | |
| 85 | let num_rows = self |
| 86 | .columns |
| 87 | .iter() |
| 88 | .map(|column| column.len()) |
| 89 | .max() |
| 90 | .unwrap_or(0); |
| 91 | |
| 92 | let mut rows = Vec::with_capacity(num_rows); |
| 93 | for _ in 0..num_rows { |
| 94 | rows.push(RowTemplate { |
| 95 | row_id: gen_row_id().to_string(), |
| 96 | height: 60, |
| 97 | visibility: true, |
| 98 | cells: Default::default(), |
| 99 | }); |
| 100 | } |
| 101 | |
| 102 | for (field_index, row) in self.columns.into_iter().enumerate() { |
| 103 | for (row_index, cell) in row.into_iter().enumerate() { |
| 104 | rows[row_index] |
| 105 | .cells |
| 106 | .insert(fields[field_index].field_id.clone(), cell); |
| 107 | } |
| 108 | } |
| 109 | |
| 110 | let views = vec![DatabaseViewTemplate { |
| 111 | name: "".to_string(), |
| 112 | layout: DatabaseLayout::Grid, |
| 113 | layout_settings: Default::default(), |
| 114 | filters: vec![], |
| 115 | group_settings: vec![], |
| 116 | sorts: vec![], |
| 117 | }]; |
| 118 | |
| 119 | DatabaseTemplate { |
| 120 | database_id: self.database_id, |
| 121 | view_id: self.view_id, |
| 122 | fields, |
| 123 | rows, |
| 124 | views, |
| 125 | } |
| 126 | } |
| 127 | } |
| 128 | |
| 129 | pub struct FieldTemplateBuilder { |
no test coverage detected