Skip to content
Clone
e0a1256
31 lines 1005 B Rust
use async_graphql::ErrorExtensions;
use crate::Error;
fn code_for(err: &Error) -> &'static str {
match err {
Error::NotExist(_) => "NOT_EXIST",
Error::BranchNotExist(_) => "BRANCH_NOT_EXIST",
Error::TagNotExist(_) => "TAG_NOT_EXIST",
Error::NotFound { .. } => "NOT_FOUND",
Error::InvalidRefName(_) => "INVALID_REF_NAME",
Error::InvalidRevSpec(_) => "INVALID_REV_SPEC",
Error::Open(_) => "REPO_OPEN_ERROR",
Error::Odb(_) => "ODB_ERROR",
Error::Find(_) => "FIND_ERROR",
Error::Ref(_) => "REF_ERROR",
Error::RevParse(_) => "REV_PARSE_ERROR",
Error::Serde(_) => "SERDE_ERROR",
Error::Io(_) => "IO_ERROR",
Error::Other(_) => "INTERNAL_ERROR",
}
}
impl ErrorExtensions for Error {
fn extend(&self) -> async_graphql::Error {
let code = code_for(self);
async_graphql::Error::new(self.to_string()).extend_with(|_, e| {
e.set("code", code);
})
}
}