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

Method del_view

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

Source from the content-addressed store, hash-verified

798 }
799
800 fn del_view(&mut self, view: &ViewState) -> PristineResult<()> {
801 // Guard: Shared views cannot be deleted (they own global GRAPH edges).
802 if view.kind.is_shared() {
803 return Err(PristineError::CannotDeleteSharedView {
804 name: view.name.clone(),
805 });
806 }
807
808 // Guard: Check for child views that reference this view as parent.
809 // Deleting a parent would leave children with a dangling parent pointer.
810 let children = ViewTxnT::get_children_views(self, view.id)?;
811 if !children.is_empty() {
812 let child_names: Vec<String> = children.iter().map(|c| c.name.clone()).collect();
813 return Err(PristineError::ViewHasChildren {
814 name: view.name.clone(),
815 children: child_names,
816 });
817 }
818
819 // Remove from VIEWS table
820 {
821 let mut table = self.txn.open_table(VIEWS)?;
822 table.remove(view.name.as_str())?;
823 }
824
825 // Remove all change log entries for this view
826 {
827 let mut table = self.txn.open_table(VIEW_CHANGES)?;
828 for seq in 0..view.change_count {
829 let key = encode_view_seq(view.id, seq);
830 table.remove(&key)?;
831 }
832 }
833
834 // Remove all reverse change log entries
835 {
836 let mut rev_table = self.txn.open_table(REV_VIEW_CHANGES)?;
837 let table = self.txn.open_table(VIEW_CHANGES)?;
838 for seq in 0..view.change_count {
839 let key = encode_view_seq(view.id, seq);
840 if let Some(change_id) = table.get(&key)? {
841 let rev_key = encode_view_seq(view.id, change_id.value());
842 rev_table.remove(&rev_key)?;
843 }
844 }
845 }
846
847 // Remove all state/sequence mappings from STATES table
848 {
849 let mut table = self.txn.open_table(STATES)?;
850 let merkle_table = self.txn.open_table(MERKLE_CHAIN)?;
851 for seq in 0..view.change_count {
852 let key = encode_view_seq(view.id, seq);
853 if let Some(merkle_bytes) = merkle_table.get(&key)? {
854 let merkle = merkle_bytes.value();
855 let state_key = encode_view_merkle(view.id, merkle);
856 table.remove(&state_key)?;
857 }

Callers 3

test_del_viewFunction · 0.80
delete_viewMethod · 0.80

Calls 10

encode_view_seqFunction · 0.85
encode_view_merkleFunction · 0.85
is_sharedMethod · 0.80
del_tags_for_viewMethod · 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