ontoref-code/crates/ontoref-oplog/src/error.rs
Jesús Pérez 234432856c
feat(daemon,ops): daemon surface + ontology-content implementation
Substantive changes across the crate tree (cargo check --workspace: clean):
- ontoref-daemon: UI handlers/pages, MCP surface, api, domain query delegation
- ontoref-ops: runtime
- ontoref-ontology / ontoref-ontology-content / oplog / triples / commit: supporting
- domains/rustelo: schema surface sync
2026-07-19 18:23:49 +01:00

63 lines
1.6 KiB
Rust

//! Errors for the op log.
use ontoref_types::OpId;
/// Errors surfaced by `OpLog`.
#[derive(Debug, thiserror::Error)]
pub enum Error {
/// Underlying redb database failure.
#[error("redb: {0}")]
Db(String),
/// Canonical encoding/decoding failure.
#[error("canonical: {0}")]
Canonical(#[from] ontoref_types::Error),
/// Signature verification failed on append.
#[error("bad signature on operation {0:?}")]
BadSignature(OpId),
/// An operation references a parent that is not in the log.
#[error("unknown parent {0:?}")]
UnknownParent(OpId),
/// An operation declares a timestamp not strictly greater than every
/// parent's.
#[error("non-monotonic timestamp on operation {0:?}")]
NonMonotonicTimestamp(OpId),
}
impl From<redb::Error> for Error {
fn from(err: redb::Error) -> Self {
Error::Db(err.to_string())
}
}
impl From<redb::DatabaseError> for Error {
fn from(err: redb::DatabaseError) -> Self {
Error::Db(err.to_string())
}
}
impl From<redb::TransactionError> for Error {
fn from(err: redb::TransactionError) -> Self {
Error::Db(err.to_string())
}
}
impl From<redb::TableError> for Error {
fn from(err: redb::TableError) -> Self {
Error::Db(err.to_string())
}
}
impl From<redb::StorageError> for Error {
fn from(err: redb::StorageError) -> Self {
Error::Db(err.to_string())
}
}
impl From<redb::CommitError> for Error {
fn from(err: redb::CommitError) -> Self {
Error::Db(err.to_string())
}
}
/// Convenience alias.
pub type Result<T> = std::result::Result<T, Error>;