| 155 | |
| 156 | impl<'a> KgTxnT for WriteTxn<'a> { |
| 157 | fn get_kg_node(&self, id: &str) -> PristineResult<Option<KgNode>> { |
| 158 | let table = match self.txn.open_table(KG_NODES) { |
| 159 | Ok(t) => t, |
| 160 | Err(redb::TableError::TableDoesNotExist(_)) => return Ok(None), |
| 161 | Err(e) => return Err(PristineError::from(e)), |
| 162 | }; |
| 163 | let result = match table.get(id)? { |
| 164 | Some(value) => { |
| 165 | let bytes: &[u8] = value.value(); |
| 166 | let node: KgNode = |
| 167 | serde_json::from_slice(bytes).map_err(|e| PristineError::Serialization { |
| 168 | message: e.to_string(), |
| 169 | })?; |
| 170 | Some(node) |
| 171 | } |
| 172 | None => None, |
| 173 | }; |
| 174 | drop(table); |
| 175 | Ok(result) |
| 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) { |