adding card dav and cald dav

This commit is contained in:
DioCrafts
2025-04-13 01:04:04 +02:00
parent f2ecbc1a39
commit 52d8250d51
52 changed files with 8056 additions and 536 deletions
+16
View File
@@ -312,6 +312,8 @@ pub struct AppState {
pub favorites_service: Option<Arc<dyn FavoritesUseCase>>,
pub recent_service: Option<Arc<dyn RecentItemsUseCase>>,
pub storage_usage_service: Option<Arc<dyn crate::application::ports::storage_ports::StorageUsagePort>>,
pub calendar_service: Option<Arc<dyn crate::application::ports::storage_ports::StorageUseCase>>,
pub contact_service: Option<Arc<dyn crate::application::ports::storage_ports::StorageUseCase>>,
}
impl Default for AppState {
@@ -825,6 +827,8 @@ impl Default for AppState {
favorites_service: None,
recent_service: None,
storage_usage_service: None,
calendar_service: None,
contact_service: None,
}
}
}
@@ -846,6 +850,8 @@ impl AppState {
favorites_service: None,
recent_service: None,
storage_usage_service: None,
calendar_service: None,
contact_service: None,
}
}
@@ -883,4 +889,14 @@ impl AppState {
self.storage_usage_service = Some(storage_usage_service);
self
}
pub fn with_calendar_service(mut self, calendar_service: Arc<dyn crate::application::ports::storage_ports::StorageUseCase>) -> Self {
self.calendar_service = Some(calendar_service);
self
}
pub fn with_contact_service(mut self, contact_service: Arc<dyn crate::application::ports::storage_ports::StorageUseCase>) -> Self {
self.contact_service = Some(contact_service);
self
}
}
+28 -2
View File
@@ -24,6 +24,8 @@ pub enum ErrorKind {
NotImplemented,
/// Operación no soportada
UnsupportedOperation,
/// Error de base de datos
DatabaseError,
}
impl Display for ErrorKind {
@@ -37,6 +39,7 @@ impl Display for ErrorKind {
ErrorKind::InternalError => write!(f, "Internal Error"),
ErrorKind::NotImplemented => write!(f, "Not Implemented"),
ErrorKind::UnsupportedOperation => write!(f, "Unsupported Operation"),
ErrorKind::DatabaseError => write!(f, "Database Error"),
}
}
}
@@ -140,11 +143,33 @@ impl DomainError {
}
}
/// Alias for access_denied to maintain compatibility
pub fn unauthorized<S: Into<String>>(message: S) -> Self {
Self {
kind: ErrorKind::AccessDenied,
entity_type: "Authorization",
entity_id: None,
message: message.into(),
source: None,
}
}
/// Crea un error de base de datos
pub fn database_error<S: Into<String>>(message: S) -> Self {
Self {
kind: ErrorKind::DatabaseError,
entity_type: "Database",
entity_id: None,
message: message.into(),
source: None,
}
}
/// Crea un error de validación
pub fn validation_error<S: Into<String>>(entity_type: &'static str, message: S) -> Self {
pub fn validation_error<S: Into<String>>(message: S) -> Self {
Self {
kind: ErrorKind::InvalidInput,
entity_type,
entity_type: "Validation",
entity_id: None,
message: message.into(),
source: None,
@@ -310,6 +335,7 @@ impl From<DomainError> for AppError {
ErrorKind::InternalError => axum::http::StatusCode::INTERNAL_SERVER_ERROR,
ErrorKind::NotImplemented => axum::http::StatusCode::NOT_IMPLEMENTED,
ErrorKind::UnsupportedOperation => axum::http::StatusCode::METHOD_NOT_ALLOWED,
ErrorKind::DatabaseError => axum::http::StatusCode::INTERNAL_SERVER_ERROR,
};
Self {