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

Method get_kg_edges_from

atomic-core/src/pristine/txn/write/triples.rs:34–61  ·  view source on GitHub ↗
(&self, node_id: &str)

Source from the content-addressed store, hash-verified

32 }
33
34 fn get_kg_edges_from(&self, node_id: &str) -> PristineResult<Vec<KgEdge>> {
35 let from_table = match self.txn.open_multimap_table(KG_EDGES_FROM) {
36 Ok(t) => t,
37 Err(redb::TableError::TableDoesNotExist(_)) => return Ok(Vec::new()),
38 Err(e) => return Err(PristineError::from(e)),
39 };
40 let edges_table = match self.txn.open_table(KG_EDGES) {
41 Ok(t) => t,
42 Err(redb::TableError::TableDoesNotExist(_)) => return Ok(Vec::new()),
43 Err(e) => return Err(PristineError::from(e)),
44 };
45
46 let mut edges = Vec::new();
47 let iter = from_table.get(node_id)?;
48 for result in iter {
49 let edge_key_guard: redb::AccessGuard<'_, &str> = result?;
50 let edge_key: &str = edge_key_guard.value();
51 if let Some(edge_data) = edges_table.get(edge_key)? {
52 let bytes: &[u8] = edge_data.value();
53 let edge: KgEdge =
54 serde_json::from_slice(bytes).map_err(|e| PristineError::Serialization {
55 message: e.to_string(),
56 })?;
57 edges.push(edge);
58 }
59 }
60 Ok(edges)
61 }
62
63 fn get_kg_edges_to(&self, node_id: &str) -> PristineResult<Vec<KgEdge>> {
64 let to_table = match self.txn.open_multimap_table(KG_EDGES_TO) {

Callers 2

del_kg_edges_for_nodeMethod · 0.45
test_kg_edge_crudFunction · 0.45

Calls 2

getMethod · 0.65
pushMethod · 0.45

Tested by 1

test_kg_edge_crudFunction · 0.36