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

Method del_view

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

Source from the content-addressed store, hash-verified

1272 }
1273
1274 fn del_view(&mut self, view: &ViewState) -> PristineResult<()> {
1275 // Guard: Shared views cannot be deleted (they own global GRAPH edges).
1276 if view.kind.is_shared() {
1277 return Err(PristineError::CannotDeleteSharedView {
1278 name: view.name.clone(),
1279 });
1280 }
1281
1282 // Guard: Check for child views that reference this view as parent.
1283 // Deleting a parent would leave children with a dangling parent pointer.
1284 let children = ViewTxnT::get_children_views(self, view.id)?;
1285 if !children.is_empty() {
1286 let child_names: Vec<String> = children.iter().map(|c| c.name.clone()).collect();
1287 return Err(PristineError::ViewHasChildren {
1288 name: view.name.clone(),
1289 children: child_names,
1290 });
1291 }
1292
1293 // Remove from VIEWS table
1294 {
1295 let mut table = self.txn.open_table(VIEWS)?;
1296 table.remove(view.name.as_str())?;
1297 }
1298
1299 // Remove all change log entries for this view
1300 {
1301 let mut table = self.txn.open_table(VIEW_CHANGES)?;
1302 for seq in 0..view.change_count {
1303 let key = encode_view_seq(view.id, seq);
1304 table.remove(&key)?;
1305 }
1306 }
1307
1308 // Remove all reverse change log entries
1309 {
1310 let mut rev_table = self.txn.open_table(REV_VIEW_CHANGES)?;
1311 let table = self.txn.open_table(VIEW_CHANGES)?;
1312 for seq in 0..view.change_count {
1313 let key = encode_view_seq(view.id, seq);
1314 if let Some(change_id) = table.get(&key)? {
1315 let rev_key = encode_view_seq(view.id, change_id.value());
1316 rev_table.remove(&rev_key)?;
1317 }
1318 }
1319 }
1320
1321 // Remove all state/sequence mappings from STATES table
1322 {
1323 let mut table = self.txn.open_table(STATES)?;
1324 let merkle_table = self.txn.open_table(MERKLE_CHAIN)?;
1325 for seq in 0..view.change_count {
1326 let key = encode_view_seq(view.id, seq);
1327 if let Some(merkle_bytes) = merkle_table.get(&key)? {
1328 let merkle = merkle_bytes.value();
1329 let state_key = encode_view_merkle(view.id, merkle);
1330 table.remove(&state_key)?;
1331 }

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