1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
use std::collections::BTreeMap;

#[derive(Debug, thiserror::Error)]
pub enum DriverError {
    #[error("Resource not found")]
    ResourceNotFound,

    #[error("The provided path contains invalid characters")]
    InvalidPath,

    #[error("Failed to decode file contents")]
    DecodeError,

    #[error("network error")]
    Network(),

    #[error(transparent)]
    Any(#[from] Box<dyn std::error::Error + Send + Sync>),
}

#[derive(Debug, thiserror::Error)]
pub enum MirrorError {
    #[error("Mirror name not found")]
    MirrorFailedOnStores(BTreeMap<String, DriverError>),

    #[error("Mirror failed on store")]
    MirrorFailedOnStore(String, DriverError),
}

pub type DriverResult<T> = std::result::Result<T, DriverError>;
pub type MirrorResult<T> = std::result::Result<T, MirrorError>;