use thiserror::Error;
use crate::{
domain::DomainError, eval::EvaluationError, relationship::StoreError,
revision::ConsistencyError, schema::SchemaError,
};
#[derive(Error, Debug, PartialEq)]
pub enum ZanzibarError {
#[error("Namespace '{0}' not found")]
NamespaceNotFound(String),
#[error("Relation '{0}' not found in namespace '{1}'")]
RelationNotFound(String, String),
#[error("Parsing error: {0}")]
ParseError(String),
#[error("Storage error: {0}")]
StorageError(String),
#[error("Schema must be loaded before applying relationship batches")]
SchemaRequired,
#[error(transparent)]
Domain(#[from] DomainError),
#[error(transparent)]
Schema(#[from] SchemaError),
#[error(transparent)]
Store(#[from] StoreError),
#[error(transparent)]
Consistency(#[from] ConsistencyError),
#[error(transparent)]
Evaluation(#[from] EvaluationError),
}