| 894 | } |
| 895 | |
| 896 | fn get_vault_manifest(&self) -> PristineResult<VaultManifest> { |
| 897 | let table = match self.txn.open_table(VAULT_MANIFEST) { |
| 898 | Ok(table) => table, |
| 899 | Err(redb::TableError::TableDoesNotExist(_)) => return Ok(VaultManifest::default()), |
| 900 | Err(e) => return Err(PristineError::from(e)), |
| 901 | }; |
| 902 | |
| 903 | let result = match table.get("manifest")? { |
| 904 | Some(guard) => { |
| 905 | let bytes = guard.value(); |
| 906 | let manifest: VaultManifest = |
| 907 | serde_json::from_slice(bytes).map_err(|e| PristineError::Serialization { |
| 908 | message: format!("failed to deserialize VaultManifest: {}", e), |
| 909 | })?; |
| 910 | Ok(manifest) |
| 911 | } |
| 912 | None => Ok(VaultManifest::default()), |
| 913 | }; |
| 914 | result |
| 915 | } |
| 916 | |
| 917 | fn has_vault(&self) -> PristineResult<bool> { |
| 918 | let table = match self.txn.open_table(VAULT_MANIFEST) { |