Skip to main content

orchestral_runtime/api/
error.rs

1use thiserror::Error;
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq)]
4pub enum ErrorCode {
5    NotFound,
6    PermissionDenied,
7    Conflict,
8    InvalidArgument,
9    Internal,
10}
11
12#[derive(Debug, Error)]
13pub enum ApiError {
14    #[error("not found: {0}")]
15    NotFound(String),
16    #[error("permission denied: {0}")]
17    PermissionDenied(String),
18    #[error("conflict: {0}")]
19    Conflict(String),
20    #[error("invalid argument: {0}")]
21    InvalidArgument(String),
22    #[error("internal: {0}")]
23    Internal(String),
24}
25
26impl ApiError {
27    pub fn code(&self) -> ErrorCode {
28        match self {
29            Self::NotFound(_) => ErrorCode::NotFound,
30            Self::PermissionDenied(_) => ErrorCode::PermissionDenied,
31            Self::Conflict(_) => ErrorCode::Conflict,
32            Self::InvalidArgument(_) => ErrorCode::InvalidArgument,
33            Self::Internal(_) => ErrorCode::Internal,
34        }
35    }
36}