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

Method open_or_create_view

atomic-core/src/pristine/txn/write/mod.rs:988–1010  ·  view source on GitHub ↗
(&mut self, name: &str)

Source from the content-addressed store, hash-verified

986 }
987
988 fn open_or_create_view(&mut self, name: &str) -> PristineResult<ViewState> {
989 // Check if view exists
990 {
991 let table = self.txn.open_table(VIEWS)?;
992 let result = table.get(name)?;
993 if let Some(value) = result {
994 return deserialize_view_state(value.value());
995 }
996 }
997
998 // Create new view (defaults to Shared, no parent for backward compat)
999 let id = self.next_view_id.fetch_add(1, Ordering::SeqCst);
1000 let state = ViewState::new(id, name.to_string());
1001
1002 // Save it
1003 {
1004 let mut table = self.txn.open_table(VIEWS)?;
1005 let bytes = serialize_view_state(&state);
1006 table.insert(name, bytes.as_slice())?;
1007 }
1008
1009 Ok(state)
1010 }
1011
1012 fn create_view(
1013 &mut self,

Callers 15

test_view_operationsFunction · 0.80
test_del_viewFunction · 0.80
test_del_changeFunction · 0.80
test_reinsert_changeFunction · 0.80
test_abort_transactionFunction · 0.80
init_with_viewMethod · 0.80
unrecordMethod · 0.80
reinsert_changeMethod · 0.80

Calls 5

deserialize_view_stateFunction · 0.85
serialize_view_stateFunction · 0.85
getMethod · 0.65
insertMethod · 0.45
as_sliceMethod · 0.45

Tested by 9

test_view_operationsFunction · 0.64
test_del_viewFunction · 0.64
test_del_changeFunction · 0.64
test_reinsert_changeFunction · 0.64
test_abort_transactionFunction · 0.64