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

Method upsert_kg_edge

atomic-core/src/pristine/txn/write/triples.rs:380–399  ·  view source on GitHub ↗
(&mut self, edge: &KgEdge)

Source from the content-addressed store, hash-verified

378 }
379
380 fn upsert_kg_edge(&mut self, edge: &KgEdge) -> PristineResult<()> {
381 let edge_key = encode_edge_key(&edge.from_id, &edge.to_id, &edge.kind);
382
383 let mut edges_table = self.txn.open_table(KG_EDGES)?;
384 let bytes = serde_json::to_vec(edge).map_err(|e| PristineError::Serialization {
385 message: e.to_string(),
386 })?;
387 edges_table.insert(edge_key.as_str(), bytes.as_slice())?;
388 drop(edges_table);
389
390 // Update indexes
391 let mut from_table = self.txn.open_multimap_table(KG_EDGES_FROM)?;
392 from_table.insert(edge.from_id.as_str(), edge_key.as_str())?;
393 drop(from_table);
394
395 let mut to_table = self.txn.open_multimap_table(KG_EDGES_TO)?;
396 to_table.insert(edge.to_id.as_str(), edge_key.as_str())?;
397
398 Ok(())
399 }
400
401 fn del_kg_node(&mut self, id: &str) -> PristineResult<bool> {
402 // First delete all edges for this node

Callers 15

rewrite_session_turnsMethod · 0.80
emit_session_nodeMethod · 0.80
emit_turn_kgMethod · 0.80
emit_session_fork_kgMethod · 0.80
test_kg_edge_crudFunction · 0.80
test_kg_neighborsFunction · 0.80
test_kg_persistenceFunction · 0.80
kg_enrich_viewsMethod · 0.80
kg_enrich_modulesMethod · 0.80

Calls 4

encode_edge_keyFunction · 0.85
insertMethod · 0.45
as_strMethod · 0.45
as_sliceMethod · 0.45