1use std::error::Error;
2use std::fmt;
3
4#[derive(Debug, Clone, PartialEq, Eq)]
5pub enum AdminModelError {
6 EmptyField { field: &'static str },
7 InvalidToken { field: &'static str, value: String },
8 InvalidRoute { field: &'static str, value: String },
9 DuplicateResource { resource_id: String },
10 DuplicateWidget { widget_id: String },
11 DuplicateWorkflow { workflow_id: String },
12}
13
14impl fmt::Display for AdminModelError {
15 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
16 match self {
17 Self::EmptyField { field } => write!(f, "`{field}` cannot be empty"),
18 Self::InvalidToken { field, value } => {
19 write!(f, "`{field}` contains an invalid token `{value}`")
20 }
21 Self::InvalidRoute { field, value } => {
22 write!(f, "`{field}` must start with `/`, got `{value}`")
23 }
24 Self::DuplicateResource { resource_id } => {
25 write!(f, "admin resource `{resource_id}` is duplicated")
26 }
27 Self::DuplicateWidget { widget_id } => {
28 write!(f, "admin widget `{widget_id}` is duplicated")
29 }
30 Self::DuplicateWorkflow { workflow_id } => {
31 write!(f, "admin workflow `{workflow_id}` is duplicated")
32 }
33 }
34 }
35}
36
37impl Error for AdminModelError {}