From 6c2c3635617a60e0d507ef1ce87ffcdca6a09596 Mon Sep 17 00:00:00 2001 From: Andras Schmelczer Date: Thu, 2 Jan 2025 11:33:53 +0000 Subject: [PATCH] Refactor errors --- backend/sync_server/src/errors.rs | 38 ++++++++++++++++--------------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/backend/sync_server/src/errors.rs b/backend/sync_server/src/errors.rs index b97aadc..d66f25b 100644 --- a/backend/sync_server/src/errors.rs +++ b/backend/sync_server/src/errors.rs @@ -4,7 +4,7 @@ use axum::{ response::{IntoResponse, Response}, Json, }; -use log::{info, warn}; +use log::{error, info}; use schemars::JsonSchema; use serde::Serialize; use thiserror::Error; @@ -33,12 +33,12 @@ pub enum SyncServerError { impl SyncServerError { pub fn serialize(&self) -> SerializedError { match self { - Self::InitError(error) => format_anyhow_error(error), - Self::ClientError(error) => format_anyhow_error(error), - Self::ServerError(error) => format_anyhow_error(error), - Self::NotFound(error) => format_anyhow_error(error), - Self::Unauthorized(error) => format_anyhow_error(error), - Self::PermissionDeniedError(error) => format_anyhow_error(error), + Self::InitError(error) => error.into(), + Self::ClientError(error) => error.into(), + Self::ServerError(error) => error.into(), + Self::NotFound(error) => error.into(), + Self::Unauthorized(error) => error.into(), + Self::PermissionDeniedError(error) => error.into(), } } } @@ -64,17 +64,19 @@ pub struct SerializedError { pub causes: Vec, } -fn format_anyhow_error(error: &anyhow::Error) -> SerializedError { - let mut causes = vec![]; - let mut current_error = error.source(); - while let Some(error) = current_error { - causes.push(error.to_string()); - current_error = error.source(); - } +impl From<&anyhow::Error> for SerializedError { + fn from(error: &anyhow::Error) -> SerializedError { + let mut causes = vec![]; + let mut current_error = error.source(); + while let Some(error) = current_error { + causes.push(error.to_string()); + current_error = error.source(); + } - SerializedError { - message: error.to_string(), - causes, + SerializedError { + message: error.to_string(), + causes, + } } } @@ -87,7 +89,7 @@ pub const fn init_error(error: anyhow::Error) -> SyncServerError { } pub fn server_error(error: anyhow::Error) -> SyncServerError { - warn!("Server error: {:?}", error); + error!("Server error: {:?}", error); SyncServerError::ServerError(error) }