|
@ -6,24 +6,6 @@ use custom_error::custom_error; |
|
|
use crate::models::errors::*;
|
|
|
use crate::models::errors::*;
|
|
|
use r2d2;
|
|
|
use r2d2;
|
|
|
use std::convert::From;
|
|
|
use std::convert::From;
|
|
|
// use std::error::Error;
|
|
|
|
|
|
|
|
|
|
|
|
// pub enum DomainError {
|
|
|
|
|
|
// #[display(fmt = "PasswordHashError")]
|
|
|
|
|
|
// PwdHashError,
|
|
|
|
|
|
// #[display(fmt = "Bad Id")]
|
|
|
|
|
|
// IdError,
|
|
|
|
|
|
// #[display(fmt = "Generic Error")]
|
|
|
|
|
|
// GenericError,
|
|
|
|
|
|
// DuplicateValue,
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
// impl Error for DomainError {
|
|
|
|
|
|
// fn source(&self) -> Option<&(dyn error::Error + 'static)> {
|
|
|
|
|
|
// // Generic error, underlying cause isn't tracked.
|
|
|
|
|
|
// None
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
// impl From<DBError> for DomainError {
|
|
|
// impl From<DBError> for DomainError {
|
|
|
// fn from(error: DBError) -> DomainError {
|
|
|
// fn from(error: DBError) -> DomainError {
|
|
@ -41,47 +23,43 @@ use std::convert::From; |
|
|
// }
|
|
|
// }
|
|
|
// }
|
|
|
// }
|
|
|
|
|
|
|
|
|
custom_error! { pub DomainError
|
|
|
|
|
|
|
|
|
custom_error! { #[derive(new)] pub DomainError
|
|
|
PwdHashError {source: BcryptError} = "Failed to has password",
|
|
|
PwdHashError {source: BcryptError} = "Failed to has password",
|
|
|
DbError {source: diesel::result::Error} = "Database error",
|
|
|
DbError {source: diesel::result::Error} = "Database error",
|
|
|
DbPoolError {source: r2d2::Error} = "Failed to get connection from pool",
|
|
|
DbPoolError {source: r2d2::Error} = "Failed to get connection from pool",
|
|
|
|
|
|
PasswordError {cause: String} = "Failed to validate password - {cause}",
|
|
|
GenericError {cause: String} = "Generic Error - Reason: {cause}"
|
|
|
GenericError {cause: String} = "Generic Error - Reason: {cause}"
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
impl ResponseError for DomainError {
|
|
|
impl ResponseError for DomainError {
|
|
|
fn error_response(&self) -> HttpResponse {
|
|
|
fn error_response(&self) -> HttpResponse {
|
|
|
|
|
|
let err = self;
|
|
|
match self {
|
|
|
match self {
|
|
|
DomainError::PwdHashError { source } => {
|
|
|
DomainError::PwdHashError { source } => {
|
|
|
HttpResponse::InternalServerError().json(ErrorModel {
|
|
|
HttpResponse::InternalServerError().json(ErrorModel {
|
|
|
status_code: 500,
|
|
|
|
|
|
reason: format!(
|
|
|
|
|
|
"{} {}",
|
|
|
|
|
|
"Unexpected Error - Failed to hash password", source
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
error_code: 500,
|
|
|
|
|
|
reason: format!("{} {}", err.to_string(), source).as_str(),
|
|
|
})
|
|
|
})
|
|
|
}
|
|
|
}
|
|
|
DomainError::DbError { source } => {
|
|
|
DomainError::DbError { source } => {
|
|
|
HttpResponse::InternalServerError().json(ErrorModel {
|
|
|
HttpResponse::InternalServerError().json(ErrorModel {
|
|
|
status_code: 500,
|
|
|
|
|
|
reason: format!("{} {}", "Unexpected Database Error", source),
|
|
|
|
|
|
|
|
|
error_code: 500,
|
|
|
|
|
|
reason: format!("{} {}", err.to_string(), source).as_str(),
|
|
|
})
|
|
|
})
|
|
|
}
|
|
|
}
|
|
|
DomainError::DbPoolError { source } => {
|
|
|
DomainError::DbPoolError { source } => {
|
|
|
HttpResponse::InternalServerError().json(ErrorModel {
|
|
|
HttpResponse::InternalServerError().json(ErrorModel {
|
|
|
status_code: 500,
|
|
|
|
|
|
reason: format!(
|
|
|
|
|
|
"{} {}",
|
|
|
|
|
|
"Unexpected Error - Failed to get connection from pool", source
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
error_code: 500,
|
|
|
|
|
|
reason: format!("{} {}", err.to_string(), source).as_str(),
|
|
|
})
|
|
|
})
|
|
|
}
|
|
|
}
|
|
|
|
|
|
DomainError::PasswordError { cause } => HttpResponse::BadRequest().json(ErrorModel {
|
|
|
|
|
|
error_code: 400,
|
|
|
|
|
|
reason: format!("{} {}, ", err.to_string(), cause.clone()).as_str(),
|
|
|
|
|
|
}),
|
|
|
DomainError::GenericError { cause } => HttpResponse::BadRequest().json(ErrorModel {
|
|
|
DomainError::GenericError { cause } => HttpResponse::BadRequest().json(ErrorModel {
|
|
|
status_code: 400,
|
|
|
|
|
|
reason: format!(
|
|
|
|
|
|
"{} {}, ",
|
|
|
|
|
|
"Unexpected Database Error - ".to_owned(),
|
|
|
|
|
|
cause.clone()
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
error_code: 400,
|
|
|
|
|
|
reason: format!("{} {}, ", err.to_string(), cause.clone()).as_str(),
|
|
|
}),
|
|
|
}),
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|