use thiserror::Error;
pub type DomainResult<T> = Result<T, DomainError>;
#[derive(Debug, Error, Clone, PartialEq, Eq)]
pub enum DomainError {
#[error("invalid file ID '{value}': {reason}")]
InvalidFileId {
value: String,
reason: String,
},
#[error("volume {volume_id} not found")]
VolumeNotFound {
volume_id: u32,
},
#[error("no replicas available for volume {volume_id}")]
NoReplicasAvailable {
volume_id: u32,
},
#[error("file not found: {file_id}")]
FileNotFound {
file_id: String,
},
#[error("assignment failed: {reason}")]
AssignmentFailed {
reason: String,
},
#[error("upload failed: {reason}")]
UploadFailed {
reason: String,
},
#[error("download failed: {reason}")]
DownloadFailed {
reason: String,
},
#[error("invalid URL: {reason}")]
InvalidUrl {
reason: String,
},
#[error("all masters unavailable")]
AllMastersUnavailable,
#[error("configuration error: {reason}")]
ConfigurationError {
reason: String,
},
}