| 665 | |
| 666 | impl VaultTxnT for ReadTxn { |
| 667 | fn get_vault_entry(&self, path: &str) -> PristineResult<Option<VaultEntry>> { |
| 668 | let table = match self.txn.open_table(VAULT_ENTRIES) { |
| 669 | Ok(table) => table, |
| 670 | Err(redb::TableError::TableDoesNotExist(_)) => return Ok(None), |
| 671 | Err(e) => return Err(PristineError::from(e)), |
| 672 | }; |
| 673 | |
| 674 | let result = match table.get(path)? { |
| 675 | Some(guard) => { |
| 676 | let bytes = guard.value(); |
| 677 | let entry: VaultEntry = |
| 678 | postcard::from_bytes(bytes).map_err(|e| PristineError::Serialization { |
| 679 | message: format!("failed to deserialize VaultEntry at '{}': {}", path, e), |
| 680 | })?; |
| 681 | Ok(Some(entry)) |
| 682 | } |
| 683 | None => Ok(None), |
| 684 | }; |
| 685 | result |
| 686 | } |
| 687 | |
| 688 | fn list_vault_entries( |
| 689 | &self, |