mongo_file_center/
file_center_error.rs1use 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}