| 13 | |
| 14 | impl<'a> VaultTxnT for WriteTxn<'a> { |
| 15 | fn get_vault_entry(&self, path: &str) -> PristineResult<Option<VaultEntry>> { |
| 16 | let table = match self.txn.open_table(VAULT_ENTRIES) { |
| 17 | Ok(table) => table, |
| 18 | Err(redb::TableError::TableDoesNotExist(_)) => return Ok(None), |
| 19 | Err(e) => return Err(PristineError::from(e)), |
| 20 | }; |
| 21 | |
| 22 | let result = match table.get(path)? { |
| 23 | Some(guard) => { |
| 24 | let bytes = guard.value(); |
| 25 | let entry: VaultEntry = |
| 26 | postcard::from_bytes(bytes).map_err(|e| PristineError::Serialization { |
| 27 | message: format!("failed to deserialize VaultEntry at '{}': {}", path, e), |
| 28 | })?; |
| 29 | Ok(Some(entry)) |
| 30 | } |
| 31 | None => Ok(None), |
| 32 | }; |
| 33 | result |
| 34 | } |
| 35 | |
| 36 | fn list_vault_entries( |
| 37 | &self, |