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

Method put_change_deps

atomic-core/src/pristine/txn/write/mod.rs:1506–1550  ·  view source on GitHub ↗
(&mut self, change_id: NodeId, deps: &[Hash])

Source from the content-addressed store, hash-verified

1504 }
1505
1506 fn put_change_deps(&mut self, change_id: NodeId, deps: &[Hash]) -> PristineResult<()> {
1507 let existing: Vec<[u8; 32]> = {
1508 let table = self.txn.open_multimap_table(CHANGE_DEPS)?;
1509 let iter = table.get(change_id.get())?;
1510 let mut hashes = Vec::new();
1511 for item in iter {
1512 hashes.push(*item?.value());
1513 }
1514 hashes
1515 };
1516
1517 if !existing.is_empty() {
1518 {
1519 let mut table = self.txn.open_multimap_table(CHANGE_DEPS)?;
1520 for dep in &existing {
1521 table.remove(change_id.get(), dep)?;
1522 }
1523 }
1524 {
1525 let mut table = self.txn.open_multimap_table(REV_CHANGE_DEPS)?;
1526 for dep in &existing {
1527 table.remove(dep, change_id.get())?;
1528 }
1529 }
1530 }
1531
1532 {
1533 let mut table = self.txn.open_multimap_table(CHANGE_DEPS)?;
1534 for dep in deps {
1535 table.insert(change_id.get(), dep.as_bytes())?;
1536 }
1537 }
1538 {
1539 let mut table = self.txn.open_multimap_table(REV_CHANGE_DEPS)?;
1540 for dep in deps {
1541 table.insert(dep.as_bytes(), change_id.get())?;
1542 }
1543 }
1544 {
1545 let mut table = self.txn.open_table(CHANGE_DEPS_INDEXED)?;
1546 table.insert(change_id.get(), deps.len() as u64)?;
1547 }
1548
1549 Ok(())
1550 }
1551
1552 fn alloc_inode(&mut self) -> PristineResult<Inode> {
1553 let id = self.next_inode.fetch_add(1, Ordering::SeqCst);

Calls 7

getMethod · 0.65
removeMethod · 0.65
pushMethod · 0.45
is_emptyMethod · 0.45
insertMethod · 0.45
as_bytesMethod · 0.45
lenMethod · 0.45