Skip to main content

reinhardt_admin/types/
errors.rs

1//! Error types for admin panel
2
3use thiserror::Error;
4
5/// Admin panel error type
6#[derive(Debug, Error)]
7pub enum AdminError {
8	/// Model not registered with admin
9	#[error("Model '{0}' is not registered with admin")]
10	ModelNotRegistered(String),
11
12	/// Permission denied
13	#[error("Permission denied: {0}")]
14	PermissionDenied(String),
15
16	/// Invalid action
17	#[error("Invalid action: {0}")]
18	InvalidAction(String),
19
20	/// Database error
21	#[error("Database error: {0}")]
22	DatabaseError(String),
23
24	/// Validation error
25	#[error("Validation error: {0}")]
26	ValidationError(String),
27
28	/// Template rendering error
29	#[error("Template rendering error: {0}")]
30	TemplateError(String),
31}
32
33/// Result type for admin panel operations
34pub type AdminResult<T> = Result<T, AdminError>;
35
36/// Convert AdminError to reinhardt_core::exception::Error for seamless error handling
37impl From<AdminError> for reinhardt_core::exception::Error {
38	fn from(err: AdminError) -> Self {
39		match err {
40			AdminError::ModelNotRegistered(msg) => reinhardt_core::exception::Error::NotFound(msg),
41			AdminError::PermissionDenied(msg) => {
42				reinhardt_core::exception::Error::Authorization(msg)
43			}
44			AdminError::InvalidAction(msg) => reinhardt_core::exception::Error::Http(msg),
45			AdminError::DatabaseError(msg) => reinhardt_core::exception::Error::Database(msg),
46			AdminError::ValidationError(msg) => reinhardt_core::exception::Error::Validation(msg),
47			AdminError::TemplateError(msg) => {
48				reinhardt_core::exception::Error::Other(anyhow::anyhow!(msg))
49			}
50		}
51	}
52}