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

Method get_kg_edges_from

atomic-core/src/pristine/txn/read.rs:953–980  ·  view source on GitHub ↗
(&self, node_id: &str)

Source from the content-addressed store, hash-verified

951 }
952
953 fn get_kg_edges_from(&self, node_id: &str) -> PristineResult<Vec<KgEdge>> {
954 let from_table = match self.txn.open_multimap_table(KG_EDGES_FROM) {
955 Ok(t) => t,
956 Err(redb::TableError::TableDoesNotExist(_)) => return Ok(Vec::new()),
957 Err(e) => return Err(PristineError::from(e)),
958 };
959 let edges_table = match self.txn.open_table(KG_EDGES) {
960 Ok(t) => t,
961 Err(redb::TableError::TableDoesNotExist(_)) => return Ok(Vec::new()),
962 Err(e) => return Err(PristineError::from(e)),
963 };
964
965 let mut edges = Vec::new();
966 let iter = from_table.get(node_id)?;
967 for result in iter {
968 let edge_key_guard = result?;
969 let edge_key = edge_key_guard.value();
970 if let Some(edge_data) = edges_table.get(edge_key)? {
971 let edge: KgEdge = serde_json::from_slice(edge_data.value()).map_err(|e| {
972 PristineError::Serialization {
973 message: e.to_string(),
974 }
975 })?;
976 edges.push(edge);
977 }
978 }
979 Ok(edges)
980 }
981
982 fn get_kg_edges_to(&self, node_id: &str) -> PristineResult<Vec<KgEdge>> {
983 let to_table = match self.txn.open_multimap_table(KG_EDGES_TO) {

Calls 2

getMethod · 0.65
pushMethod · 0.45