feat: gate the store behind a feature and document the schema as a contract

This commit is contained in:
randogoth 2026-09-28 23:41:11 +03:00
parent 8fb5661b53
commit aa3950bc80
6 changed files with 122 additions and 16 deletions

View file

@ -55,6 +55,7 @@ pub enum Error {
port: u16,
source: std::io::Error,
},
#[cfg(feature = "store")]
Storage(rusqlite::Error),
Noise(snow::Error),
Io(std::io::Error),
@ -111,6 +112,7 @@ impl fmt::Display for Error {
Self::Unreachable { host, port, source } => {
write!(f, "cannot reach {host}:{port}: {source}")
}
#[cfg(feature = "store")]
Self::Storage(e) => write!(f, "storage error: {e}"),
Self::Noise(e) => write!(f, "noise error: {e}"),
Self::Io(e) => write!(f, "{e}"),
@ -123,6 +125,7 @@ impl std::error::Error for Error {
fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
match self {
Self::Unreachable { source, .. } => Some(source),
#[cfg(feature = "store")]
Self::Storage(e) => Some(e),
Self::Noise(e) => Some(e),
Self::Io(e) => Some(e),
@ -131,6 +134,7 @@ impl std::error::Error for Error {
}
}
#[cfg(feature = "store")]
impl From<rusqlite::Error> for Error {
fn from(e: rusqlite::Error) -> Self {
Error::Storage(e)