mongo_file_center/
file_center_error.rs

1use std::{
2    error::Error,
3    fmt::{self, Display, Formatter},
4    io,
5};
6
7#[derive(Debug)]
8pub enum FileCenterError {
9    MongoDBError(crate::mongodb::error::Error),
10    DocumentError(crate::bson::document::ValueAccessError),
11    FileSizeThresholdError,
12    VersionError,
13    DatabaseTooNewError { supported_latest: i32, current: i32 },
14    IOError(io::Error),
15    IDTokenError(&'static str),
16}
17
18impl Display for FileCenterError {
19    #[inline]
20    fn fmt(&self, f: &mut Formatter) -> Result<(), fmt::Error> {
21        match self {
22            FileCenterError::MongoDBError(err) => Display::fmt(err, f),
23            FileCenterError::DocumentError(err) => Display::fmt(err, f),
24            FileCenterError::FileSizeThresholdError => {
25                f.write_str("the file size threshold is incorrect")
26            },
27            FileCenterError::VersionError => f.write_str("the version is incorrect"),
28            FileCenterError::DatabaseTooNewError {
29                supported_latest,
30                current,
31            } => f.write_fmt(format_args!(
32                "the current database version is {}, but this library only supports to {}",
33                current, supported_latest
34            )),
35            FileCenterError::IOError(err) => Display::fmt(err, f),
36            FileCenterError::IDTokenError(err) => f.write_str(err),
37        }
38    }
39}
40
41impl Error for FileCenterError {}
42
43impl From<crate::mongodb::error::Error> for FileCenterError {
44    #[inline]
45    fn from(err: crate::mongodb::error::Error) -> Self {
46        FileCenterError::MongoDBError(err)
47    }
48}
49
50impl From<crate::bson::document::ValueAccessError> for FileCenterError {
51    #[inline]
52    fn from(err: crate::bson::document::ValueAccessError) -> Self {
53        FileCenterError::DocumentError(err)
54    }
55}
56
57impl From<io::Error> for FileCenterError {
58    #[inline]
59    fn from(err: io::Error) -> Self {
60        FileCenterError::IOError(err)
61    }
62}