(&mut self, from_id: &str, to_id: &str, kind: &str)
| 401 | } |
| 402 | |
| 403 | fn del_kg_edge(&mut self, from_id: &str, to_id: &str, kind: &str) -> PristineResult<bool> { |
| 404 | let edge_key = encode_edge_key(from_id, to_id, kind); |
| 405 | |
| 406 | let mut edges_table = match self.txn.open_table(KG_EDGES) { |
| 407 | Ok(t) => t, |
| 408 | Err(redb::TableError::TableDoesNotExist(_)) => return Ok(false), |
| 409 | Err(e) => return Err(PristineError::from(e)), |
| 410 | }; |
| 411 | |
| 412 | let existed = edges_table.remove(edge_key.as_str())?.is_some(); |
| 413 | drop(edges_table); |
| 414 | |
| 415 | if existed { |
| 416 | // Clean up indexes |
| 417 | let mut from_table = self.txn.open_multimap_table(KG_EDGES_FROM)?; |
| 418 | from_table.remove(from_id, edge_key.as_str())?; |
| 419 | drop(from_table); |
| 420 | |
| 421 | let mut to_table = self.txn.open_multimap_table(KG_EDGES_TO)?; |
| 422 | to_table.remove(to_id, edge_key.as_str())?; |
| 423 | } |
| 424 | |
| 425 | Ok(existed) |
| 426 | } |
| 427 | |
| 428 | fn del_kg_edges_for_node(&mut self, node_id: &str) -> PristineResult<usize> { |
| 429 | // Collect all edge keys for this node (both directions) |
no test coverage detected