MCPcopy Create free account
hub / github.com/AppFlowy-IO/AppFlowy-Collab / from_database_data

Method from_database_data

collab/src/database/entity.rs:235–295  ·  view source on GitHub ↗

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,
  )

Source from the content-addressed store, hash-verified

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,

Callers

nothing calls this directly

Calls 6

gen_database_idFunction · 0.85
gen_row_idFunction · 0.85
gen_database_view_idFunction · 0.85
into_iterMethod · 0.80
timestampFunction · 0.70
getMethod · 0.45

Tested by

no test coverage detected