From 6c6280e75d91ca4857d53808f407184dac2e46c9 Mon Sep 17 00:00:00 2001 From: Sebastian Martinez Date: Tue, 13 Aug 2024 09:59:23 +0200 Subject: [PATCH] Add Error enum for error handling --- src-tauri/src/error.rs | 73 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 src-tauri/src/error.rs diff --git a/src-tauri/src/error.rs b/src-tauri/src/error.rs new file mode 100644 index 0000000..e3ae589 --- /dev/null +++ b/src-tauri/src/error.rs @@ -0,0 +1,73 @@ +use serde::Serialize; + +/// Errors relating to the API backend. +#[derive(Debug, thiserror::Error)] +pub enum Error { + /// Profile error. + #[error(transparent)] + Profile(#[from] radicle::profile::Error), + + /// Node database error. + #[error(transparent)] + Database(#[from] radicle::node::db::Error), + + /// Policy store error. + #[error(transparent)] + PolicyStore(#[from] radicle::node::policy::store::Error), + + #[error(transparent)] + CobsCache(#[from] radicle::cob::cache::Error), + + /// Cob patch cache error. + #[error(transparent)] + CachePatch(#[from] radicle::cob::patch::cache::Error), + + /// Cob issue cache error. + #[error(transparent)] + CacheIssue(#[from] radicle::cob::issue::cache::Error), + + /// Repository error. + #[error(transparent)] + Repository(#[from] radicle::storage::RepositoryError), + + /// Project doc error. + #[error(transparent)] + ProjectDoc(#[from] radicle::identity::doc::PayloadError), + + /// Notification store error. + #[error(transparent)] + NotificationsStore(#[from] radicle::node::notifications::store::Error), + + /// Routing error. + #[error(transparent)] + Routing(#[from] radicle::node::routing::Error), + + /// Git2 error. + #[error(transparent)] + Git2(#[from] radicle::git::raw::Error), + + /// Storage refs error. + #[error(transparent)] + StorageRef(#[from] radicle::storage::refs::Error), + + /// Surf error. + #[error(transparent)] + Surf(#[from] radicle_surf::Error), + + /// Storage error. + #[error(transparent)] + Storage(#[from] radicle::storage::Error), + + /// Node error. + #[error(transparent)] + Node(#[from] radicle::node::Error), +} + +impl Serialize for Error { + fn serialize(&self, serializer: S) -> Result + where + S: serde::ser::Serializer, + { + serializer.serialize_str(self.to_string().as_ref()) + } +}