use std::path::PathBuf;
#[derive(Debug, thiserror::Error)]
#[non_exhaustive]
pub enum HostError {
#[error("database at {} is locked by another process", path.display())]
Locked {
path: PathBuf,
},
#[error("i/o on {}: {source}", path.display())]
Io {
path: PathBuf,
#[source]
source: std::io::Error,
},
#[error("database at {} needs a checkpoint before a read-only open (non-empty journal)", path.display())]
NeedsCheckpoint {
path: PathBuf,
},
#[error(transparent)]
Engine(#[from] plugmem_core::Error),
#[error("embedder: {0}")]
Embed(String),
}
impl HostError {
pub(crate) fn io(path: &std::path::Path, source: std::io::Error) -> Self {
Self::Io {
path: path.to_path_buf(),
source,
}
}
}