Convert a `DatabaseData` into `CreateDatabaseParams` for duplicating a database. The internal `database_id`, database views' `view_id`s, and rows' `row_id`s are regenerated. If `include_embedded` is false, embedded views are not duplicated.
(
data: DatabaseData,
database_view_id: DatabaseViewId,
new_database_view_id: DatabaseViewId,
include_embedded: bool,
)
| 233 | /// The internal `database_id`, database views' `view_id`s, and rows' `row_id`s are regenerated. |
| 234 | /// If `include_embedded` is false, embedded views are not duplicated. |
| 235 | pub fn from_database_data( |
| 236 | data: DatabaseData, |
| 237 | database_view_id: DatabaseViewId, |
| 238 | new_database_view_id: DatabaseViewId, |
| 239 | include_embedded: bool, |
| 240 | ) -> Self { |
| 241 | let database_id = gen_database_id(); |
| 242 | let timestamp = timestamp(); |
| 243 | |
| 244 | let create_row_params = data |
| 245 | .rows |
| 246 | .into_iter() |
| 247 | .map(|row| { |
| 248 | let row_meta = data.row_metas.get(&row.id).cloned(); |
| 249 | CreateRowParams { |
| 250 | id: gen_row_id(), |
| 251 | database_id, |
| 252 | created_at: timestamp, |
| 253 | modified_at: timestamp, |
| 254 | cells: row.cells, |
| 255 | height: row.height, |
| 256 | visibility: row.visibility, |
| 257 | row_position: OrderObjectPosition::End, |
| 258 | row_meta, |
| 259 | created_by: row.created_by, |
| 260 | } |
| 261 | }) |
| 262 | .collect(); |
| 263 | |
| 264 | let create_view_params = data |
| 265 | .views |
| 266 | .into_iter() |
| 267 | .filter(|view| include_embedded || !view.embedded) |
| 268 | .map(|view| CreateViewParams { |
| 269 | database_id, |
| 270 | view_id: if view.id == database_view_id { |
| 271 | new_database_view_id |
| 272 | } else { |
| 273 | gen_database_view_id() |
| 274 | }, |
| 275 | name: view.name, |
| 276 | layout: view.layout, |
| 277 | layout_settings: view.layout_settings, |
| 278 | filters: view.filters, |
| 279 | group_settings: view.group_settings, |
| 280 | sorts: view.sorts, |
| 281 | field_settings: view.field_settings, |
| 282 | embedded: view.embedded, |
| 283 | created_at: timestamp, |
| 284 | modified_at: timestamp, |
| 285 | ..Default::default() |
| 286 | }) |
| 287 | .collect(); |
| 288 | |
| 289 | Self { |
| 290 | database_id, |
| 291 | rows: create_row_params, |
| 292 | fields: data.fields, |
nothing calls this directly
no test coverage detected