MCPcopy Create free account
hub / github.com/NodeDB-Lab/nodedb / on_delete

Method on_delete

nodedb/src/engine/kv/index.rs:414–441  ·  view source on GitHub ↗

Remove all index entries for a deleted primary key. `field_values` are the field values from the deleted entry.

(&mut self, primary_key: &[u8], field_values: &[(&str, &[u8])])

Source from the content-addressed store, hash-verified

412 ///
413 /// `field_values` are the field values from the deleted entry.
414 pub fn on_delete(&mut self, primary_key: &[u8], field_values: &[(&str, &[u8])]) {
415 for idx in &mut self.indexes {
416 for &(field, value) in field_values {
417 if field == idx.field {
418 idx.remove(value, primary_key);
419 self.total_index_writes += 1;
420 }
421 }
422 }
423
424 // Maintain composite indexes on delete.
425 for ci in &mut self.composite_indexes {
426 let vals: Vec<&[u8]> = ci
427 .fields
428 .iter()
429 .filter_map(|f| {
430 field_values
431 .iter()
432 .find(|(name, _)| *name == f.as_str())
433 .map(|(_, v)| *v)
434 })
435 .collect();
436 if vals.len() == ci.fields.len() {
437 ci.remove(&vals, primary_key);
438 self.total_index_writes += 1;
439 }
440 }
441 }
442
443 /// Write amplification ratio: total_index_writes / total_puts.
444 ///

Callers 4

deleteMethod · 0.45

Calls 6

collectMethod · 0.80
removeMethod · 0.45
iterMethod · 0.45
findMethod · 0.45
as_strMethod · 0.45
lenMethod · 0.45

Tested by 2