Make error paths explicit
This commit is contained in:
parent
a862400f64
commit
0c7e217135
4 changed files with 62 additions and 10 deletions
|
|
@ -25,6 +25,7 @@ impl std::fmt::Display for VolumeError {
|
|||
#[derive(Debug)]
|
||||
pub enum AppError {
|
||||
NotFound,
|
||||
CorruptRecord { key: String },
|
||||
Db(rusqlite::Error),
|
||||
InsufficientVolumes { need: usize, have: usize },
|
||||
PartialWrite,
|
||||
|
|
@ -43,6 +44,9 @@ impl std::fmt::Display for AppError {
|
|||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
match self {
|
||||
AppError::NotFound => write!(f, "not found"),
|
||||
AppError::CorruptRecord { key } => {
|
||||
write!(f, "corrupt record for key {key}: no volumes")
|
||||
}
|
||||
AppError::Db(e) => write!(f, "database error: {e}"),
|
||||
AppError::InsufficientVolumes { need, have } => {
|
||||
write!(f, "need {need} volumes but only {have} available")
|
||||
|
|
@ -56,6 +60,7 @@ impl IntoResponse for AppError {
|
|||
fn into_response(self) -> Response {
|
||||
let status = match &self {
|
||||
AppError::NotFound => StatusCode::NOT_FOUND,
|
||||
AppError::CorruptRecord { .. } => StatusCode::INTERNAL_SERVER_ERROR,
|
||||
AppError::Db(_) => StatusCode::INTERNAL_SERVER_ERROR,
|
||||
AppError::InsufficientVolumes { .. } => StatusCode::SERVICE_UNAVAILABLE,
|
||||
AppError::PartialWrite => StatusCode::BAD_GATEWAY,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue