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:178–205  ·  view source on GitHub ↗
(&self, node_id: &str)

Source from the content-addressed store, hash-verified

176 }
177
178 fn get_kg_edges_from(&self, node_id: &str) -> PristineResult<Vec<KgEdge>> {
179 let from_table = match self.txn.open_multimap_table(KG_EDGES_FROM) {
180 Ok(t) => t,
181 Err(redb::TableError::TableDoesNotExist(_)) => return Ok(Vec::new()),
182 Err(e) => return Err(PristineError::from(e)),
183 };
184 let edges_table = match self.txn.open_table(KG_EDGES) {
185 Ok(t) => t,
186 Err(redb::TableError::TableDoesNotExist(_)) => return Ok(Vec::new()),
187 Err(e) => return Err(PristineError::from(e)),
188 };
189
190 let mut edges = Vec::new();
191 let iter = from_table.get(node_id)?;
192 for result in iter {
193 let edge_key_guard: redb::AccessGuard<'_, &str> = result?;
194 let edge_key: &str = edge_key_guard.value();
195 if let Some(edge_data) = edges_table.get(edge_key)? {
196 let bytes: &[u8] = edge_data.value();
197 let edge: KgEdge =
198 serde_json::from_slice(bytes).map_err(|e| PristineError::Serialization {
199 message: e.to_string(),
200 })?;
201 edges.push(edge);
202 }
203 }
204 Ok(edges)
205 }
206
207 fn get_kg_edges_to(&self, node_id: &str) -> PristineResult<Vec<KgEdge>> {
208 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