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

Method upsert_kg_edge

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

Source from the content-addressed store, hash-verified

360 }
361
362 fn upsert_kg_edge(&mut self, edge: &KgEdge) -> PristineResult<()> {
363 let edge_key = encode_edge_key(&edge.from_id, &edge.to_id, &edge.kind);
364
365 let mut edges_table = self.txn.open_table(KG_EDGES)?;
366 let bytes = serde_json::to_vec(edge).map_err(|e| PristineError::Serialization {
367 message: e.to_string(),
368 })?;
369 edges_table.insert(edge_key.as_str(), bytes.as_slice())?;
370 drop(edges_table);
371
372 // Update indexes
373 let mut from_table = self.txn.open_multimap_table(KG_EDGES_FROM)?;
374 from_table.insert(edge.from_id.as_str(), edge_key.as_str())?;
375 drop(from_table);
376
377 let mut to_table = self.txn.open_multimap_table(KG_EDGES_TO)?;
378 to_table.insert(edge.to_id.as_str(), edge_key.as_str())?;
379
380 Ok(())
381 }
382
383 fn del_kg_node(&mut self, id: &str) -> PristineResult<bool> {
384 // 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