enigma_node_registry/
error.rs

1use enigma_node_types::EnigmaNodeTypesError;
2use thiserror::Error;
3
4pub type Result<T> = std::result::Result<T, EnigmaNodeRegistryError>;
5
6#[derive(Debug, Error, PartialEq, Eq)]
7pub enum EnigmaNodeRegistryError {
8    #[error("invalid input: {0}")]
9    InvalidInput(&'static str),
10    #[error("not found")]
11    NotFound,
12    #[error("conflict")]
13    Conflict,
14    #[error("json error")]
15    JsonError,
16    #[error("internal error")]
17    Internal,
18    #[error("transport error")]
19    Transport,
20}
21
22impl From<serde_json::Error> for EnigmaNodeRegistryError {
23    fn from(_: serde_json::Error) -> Self {
24        EnigmaNodeRegistryError::JsonError
25    }
26}
27
28impl From<EnigmaNodeTypesError> for EnigmaNodeRegistryError {
29    fn from(err: EnigmaNodeTypesError) -> Self {
30        match err {
31            EnigmaNodeTypesError::InvalidUsername => {
32                EnigmaNodeRegistryError::InvalidInput("username")
33            }
34            EnigmaNodeTypesError::InvalidHex => EnigmaNodeRegistryError::InvalidInput("user_id"),
35            EnigmaNodeTypesError::InvalidBase64 => EnigmaNodeRegistryError::InvalidInput("base64"),
36            EnigmaNodeTypesError::InvalidField(field) => {
37                EnigmaNodeRegistryError::InvalidInput(field)
38            }
39            EnigmaNodeTypesError::JsonError => EnigmaNodeRegistryError::JsonError,
40            EnigmaNodeTypesError::Utf8Error => EnigmaNodeRegistryError::InvalidInput("utf8"),
41        }
42    }
43}
44
45impl From<std::io::Error> for EnigmaNodeRegistryError {
46    fn from(_: std::io::Error) -> Self {
47        EnigmaNodeRegistryError::Transport
48    }
49}