vdsl_sync/application/
error.rs1use crate::domain::error::DomainError;
10use crate::infra::error::InfraError;
11
12#[derive(Debug, thiserror::Error)]
14pub enum SyncError {
15 #[error(transparent)]
17 Domain(#[from] DomainError),
18
19 #[error(transparent)]
21 Infra(#[from] InfraError),
22
23 #[error("path is outside sync root: {path}")]
25 OutsideSyncRoot { path: String },
26
27 #[error("duplicate file: {path} is a duplicate of {duplicate_of}")]
29 Duplicate { path: String, duplicate_of: String },
30
31 #[error("file not registered in sync store: {0}")]
33 NotRegistered(String),
34
35 #[error("initialization failed: {0}")]
37 Init(String),
38
39 #[error("backend not configured for location: {0}")]
41 NoBackend(String),
42
43 #[error("no route available: {src} → {dest}, path={path}")]
45 NoRouteAvailable {
46 src: String,
47 dest: String,
48 path: String,
49 },
50}
51
52impl From<std::io::Error> for SyncError {
57 fn from(e: std::io::Error) -> Self {
58 Self::Infra(InfraError::Io(e))
59 }
60}
61
62impl From<serde_json::Error> for SyncError {
63 fn from(e: serde_json::Error) -> Self {
64 Self::Infra(InfraError::Serialization(e.to_string()))
65 }
66}