| 932 | |
| 933 | impl KgTxnT for ReadTxn { |
| 934 | fn get_kg_node(&self, id: &str) -> PristineResult<Option<KgNode>> { |
| 935 | let table = match self.txn.open_table(KG_NODES) { |
| 936 | Ok(t) => t, |
| 937 | Err(redb::TableError::TableDoesNotExist(_)) => return Ok(None), |
| 938 | Err(e) => return Err(PristineError::from(e)), |
| 939 | }; |
| 940 | match table.get(id)? { |
| 941 | Some(value) => { |
| 942 | let node: KgNode = serde_json::from_slice(value.value()).map_err(|e| { |
| 943 | PristineError::Serialization { |
| 944 | message: e.to_string(), |
| 945 | } |
| 946 | })?; |
| 947 | Ok(Some(node)) |
| 948 | } |
| 949 | None => Ok(None), |
| 950 | } |
| 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) { |