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

Method upsert_kg_edge

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

Source from the content-addressed store, hash-verified

226 }
227
228 fn upsert_kg_edge(&mut self, edge: &KgEdge) -> PristineResult<()> {
229 let edge_key = encode_edge_key(&edge.from_id, &edge.to_id, &edge.kind);
230
231 let mut edges_table = self.txn.open_table(KG_EDGES)?;
232 let bytes = serde_json::to_vec(edge).map_err(|e| PristineError::Serialization {
233 message: e.to_string(),
234 })?;
235 edges_table.insert(edge_key.as_str(), bytes.as_slice())?;
236 drop(edges_table);
237
238 // Update indexes
239 let mut from_table = self.txn.open_multimap_table(KG_EDGES_FROM)?;
240 from_table.insert(edge.from_id.as_str(), edge_key.as_str())?;
241 drop(from_table);
242
243 let mut to_table = self.txn.open_multimap_table(KG_EDGES_TO)?;
244 to_table.insert(edge.to_id.as_str(), edge_key.as_str())?;
245
246 Ok(())
247 }
248
249 fn del_kg_node(&mut self, id: &str) -> PristineResult<bool> {
250 // First delete all edges for this node

Callers 12

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
kg_enrich_changesMethod · 0.80
kg_enrich_changeMethod · 0.80
kg_enrich_includesMethod · 0.80
kg_enrich_callsMethod · 0.80
kg_enrich_entitiesMethod · 0.80
vault_store_kgMethod · 0.80

Calls 4

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

Tested by 4

test_kg_edge_crudFunction · 0.64
test_kg_neighborsFunction · 0.64
test_kg_persistenceFunction · 0.64