use super::EntityUID;
use crate::transitive_closure;
use miette::Diagnostic;
use thiserror::Error;
#[derive(Debug, Diagnostic, Error)]
pub enum EntitiesError {
#[error("error during entity serialization: {0}")]
#[diagnostic(transparent)]
Serialization(#[from] crate::entities::JsonSerializationError),
#[error("error during entity deserialization: {0}")]
#[diagnostic(transparent)]
Deserialization(#[from] crate::entities::JsonDeserializationError),
#[error("duplicate entity entry `{0}`")]
Duplicate(EntityUID),
#[error("transitive closure computation/enforcement error: {0}")]
#[diagnostic(transparent)]
TransitiveClosureError(#[from] Box<transitive_closure::TcError<EntityUID>>),
#[error("entity does not conform to the schema: {0}")]
#[diagnostic(transparent)]
InvalidEntity(#[from] crate::entities::EntitySchemaConformanceError),
}
pub type Result<T> = std::result::Result<T, EntitiesError>;