MCPcopy Create free account
hub / github.com/atomicdotdev/atomic / del_view

Method del_view

atomic-core/src/pristine/txn/write/mod.rs:1368–1446  ·  view source on GitHub ↗
(&mut self, view: &ViewState)

Source from the content-addressed store, hash-verified

1366 }
1367
1368 fn del_view(&mut self, view: &ViewState) -> PristineResult<()> {
1369 // Guard: Shared views cannot be deleted (they own global GRAPH edges).
1370 if view.kind.is_shared() {
1371 return Err(PristineError::CannotDeleteSharedView {
1372 name: view.name.clone(),
1373 });
1374 }
1375
1376 // Guard: Check for child views that reference this view as parent.
1377 // Deleting a parent would leave children with a dangling parent pointer.
1378 let children = ViewTxnT::get_children_views(self, view.id)?;
1379 if !children.is_empty() {
1380 let child_names: Vec<String> = children.iter().map(|c| c.name.clone()).collect();
1381 return Err(PristineError::ViewHasChildren {
1382 name: view.name.clone(),
1383 children: child_names,
1384 });
1385 }
1386
1387 // Remove from VIEWS table
1388 {
1389 let mut table = self.txn.open_table(VIEWS)?;
1390 table.remove(view.name.as_str())?;
1391 }
1392
1393 // Remove all change log entries for this view
1394 {
1395 let mut table = self.txn.open_table(VIEW_CHANGES)?;
1396 for seq in 0..view.change_count {
1397 let key = encode_view_seq(view.id, seq);
1398 table.remove(&key)?;
1399 }
1400 }
1401
1402 // Remove all reverse change log entries
1403 {
1404 let mut rev_table = self.txn.open_table(REV_VIEW_CHANGES)?;
1405 let table = self.txn.open_table(VIEW_CHANGES)?;
1406 for seq in 0..view.change_count {
1407 let key = encode_view_seq(view.id, seq);
1408 if let Some(change_id) = table.get(&key)? {
1409 let rev_key = encode_view_seq(view.id, change_id.value());
1410 rev_table.remove(&rev_key)?;
1411 }
1412 }
1413 }
1414
1415 // Remove all state/sequence mappings from STATES table
1416 {
1417 let mut table = self.txn.open_table(STATES)?;
1418 let merkle_table = self.txn.open_table(MERKLE_CHAIN)?;
1419 for seq in 0..view.change_count {
1420 let key = encode_view_seq(view.id, seq);
1421 if let Some(merkle_bytes) = merkle_table.get(&key)? {
1422 let merkle = merkle_bytes.value();
1423 let state_key = encode_view_merkle(view.id, merkle);
1424 table.remove(&state_key)?;
1425 }

Callers 3

test_del_viewFunction · 0.80
delete_viewMethod · 0.80

Calls 11

encode_view_seqFunction · 0.85
encode_view_merkleFunction · 0.85
is_sharedMethod · 0.80
del_tags_for_viewMethod · 0.80
del_conflicts_prefixMethod · 0.80
removeMethod · 0.65
getMethod · 0.65
cloneMethod · 0.45
is_emptyMethod · 0.45
iterMethod · 0.45
as_strMethod · 0.45

Tested by 2

test_del_viewFunction · 0.64