Skip to main content

appcore_provider/
error.rs

1// =============================================================================
2//        #######
3//     ###       ###     F: error.rs
4//    ##   ## ##   ##    P: AppCore-Runtime
5//         ## ##
6//                       C: 2026/07/22 15:41:18 by dnettoRaw
7//    ##   ## ##   ##    U: 2026/07/22 15:41:18 by dnettoRaw
8//      ###########      S: 1.0.1-rc.8
9// =============================================================================
10
11use crate::ProviderRole;
12
13/// Provider composition failure.
14#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)]
15pub enum ProviderError {
16    /// A factory is already registered for the role and provider ID.
17    #[error("provider factory already registered for {role:?}: {provider_id}")]
18    DuplicateFactory {
19        /// Duplicated role.
20        role: ProviderRole,
21        /// Duplicated provider identity.
22        provider_id: String,
23    },
24    /// No factory is registered for a selected provider.
25    #[error("provider is unavailable for {role:?}: {provider_id}")]
26    Unavailable {
27        /// Requested role.
28        role: ProviderRole,
29        /// Requested provider identity.
30        provider_id: String,
31    },
32    /// Provider configuration is invalid.
33    #[error("invalid provider configuration: {0}")]
34    InvalidConfiguration(String),
35    /// A required external secret cannot be resolved.
36    #[error("provider secret is unavailable: {0}")]
37    SecretUnavailable(String),
38    /// Provider initialization failed.
39    #[error("provider initialization failed: {0}")]
40    Initialization(String),
41}
42
43/// Result returned by provider composition.
44pub type ProviderResult<T> = Result<T, ProviderError>;