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>;