sos_database/error.rs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
use sos_core::{SecretId, VaultId};
use std::path::PathBuf;
use thiserror::Error;
use uuid::Uuid;
/// Errors generated by the database library.
#[derive(Debug, Error)]
pub enum Error {
/// Database file already exists.
#[error("database '{0}' already exists")]
DatabaseExists(PathBuf),
/// Error generated attempting to access a vault that is not available.
#[error("cache not available for {0}")]
CacheNotAvailable(Uuid),
/// Error generated attempting to make changes to the current
/// vault but no vault is open.
#[error("no vault is available, vault must be open")]
NoOpenVault,
/// Error generated when a directory is expected.
#[error("path {0} is not a directory")]
NotDirectory(PathBuf),
/// Error generated when a file secret is expected.
#[error("not a file secret")]
NotFileContent,
/// Error generated if we could not determine a cache directory.
#[error("could not determine cache directory")]
NoCache,
/// Error generated when a search index is required.
#[error("no search index")]
NoSearchIndex,
/// Error generated when a folder password in the identity
/// vault could not be located.
#[error("could not find folder password for '{0}'")]
NoFolderPassword(VaultId),
/// Error generated when no storage is configured.
#[error(
"account is empty, you may need to initialize the account or sign in"
)]
NoStorage,
/// Error generated when a file encryption password is required.
#[error("no file password")]
NoFilePassword,
/// Error generated when a secret could not be found.
#[error(r#"secret "{0}" not found"#)]
SecretNotFound(SecretId),
/// Errors generated by the core library.
#[error(transparent)]
Core(#[from] sos_core::Error),
/// Errors generated by the SDK library.
#[error(transparent)]
Sdk(#[from] sos_sdk::Error),
/// Errors generated by refinery migration library.
#[error(transparent)]
Refinery(#[from] refinery::Error),
/// Errors generated by the async sqlite library.
#[error(transparent)]
AsyncSqlite(#[from] async_sqlite::Error),
/// Error generated converting to fixed length slice.
#[error(transparent)]
TryFromSlice(#[from] std::array::TryFromSliceError),
/// Errors generated by the IO module.
#[error(transparent)]
Io(#[from] std::io::Error),
/// Error generated by the AGE library when encrypting.
#[cfg(feature = "files")]
#[error(transparent)]
AgeEncrypt(#[from] age::EncryptError),
/// Error generated by the AGE library when decrypting.
#[cfg(feature = "files")]
#[error(transparent)]
AgeDecrypt(#[from] age::DecryptError),
}