Skip to main content

coven_replication/sync/store/membership/mutation/
error.rs

1use coven_keys::keys::KeyError;
2use coven_protocol::membership::MembershipError;
3use coven_protocol::objects::StorageError;
4use coven_storage::cloud::CloudHomeError;
5
6#[derive(Debug, thiserror::Error)]
7pub enum MembershipMutationError {
8    #[error("Bucket error: {0}")]
9    Bucket(#[from] StorageError),
10    #[error("Key error: {0}")]
11    Key(#[from] KeyError),
12    #[error("Membership error: {0}")]
13    Membership(#[from] MembershipError),
14    #[error("Cloud home error: {0}")]
15    CloudHome(#[from] CloudHomeError),
16    #[error("Crypto error: {0}")]
17    Crypto(String),
18    #[error("membership mutation encryption: {0}")]
19    Encryption(#[from] coven_keys::encryption::EncryptionError),
20    #[error("membership mutation wrapped keyring: {0}")]
21    WrappedKeyring(#[from] coven_protocol::wrapped_store_key::WrappedKeyringError),
22    #[error("membership mutation JSON: {0}")]
23    Json(#[from] serde_json::Error),
24    #[error("membership mutation history: {0}")]
25    Pull(#[source] Box<crate::sync::store::StorePullError>),
26    #[error("membership mutation chain: {0}")]
27    AnchoredChain(#[source] Box<crate::sync::store::AnchoredChainError>),
28    #[error("membership mutation worker: {0}")]
29    Blocking(#[from] coven_foundation::blocking::BlockingTaskError),
30    #[error("membership mutation Store operation: {0}")]
31    Store(#[source] Box<crate::sync::store::StoreError>),
32    #[error("membership mutation remote object: {0}")]
33    RemoteObject(#[from] coven_protocol::remote_object::RemoteObjectRecordError),
34    #[error("membership mutation Store protocol: {0}")]
35    Protocol(#[from] coven_protocol::store_commit::StoreProtocolError),
36    #[error("User {0} is not a current member")]
37    NotAMember(String),
38    #[error("Cannot revoke the last owner of a store")]
39    LastOwner,
40    #[error("membership mutation database state: {0}")]
41    Database(#[from] coven_database::DbError),
42    #[error("pending membership mutation does not match this request: {0}")]
43    PendingMutation(String),
44    #[error("durable membership mutation is invalid: {0}")]
45    InvalidDurableMutation(String),
46    #[error("durable membership object is invalid: {0}")]
47    StoreObject(#[from] coven_protocol::objects::StoreObjectError),
48    #[error("membership mutation preparation failed: {0}")]
49    Preparation(#[from] coven_protocol::membership_mutation::MembershipPreparationError),
50    #[error("membership rotation state failed: {0}")]
51    RotationState(#[from] coven_storage::RotationStateError),
52    #[error("prepared membership commit is invalid: {0}")]
53    PreparedCommit(#[from] coven_protocol::prepared_commit::PreparedCommitError),
54    #[error("membership floor is invalid: {0}")]
55    MembershipFloor(#[from] coven_protocol::membership::MembershipFloorError),
56}
57
58impl From<crate::sync::store::StoreError> for MembershipMutationError {
59    fn from(error: crate::sync::store::StoreError) -> Self {
60        Self::Store(Box::new(error))
61    }
62}
63
64impl From<crate::sync::store::StorePullError> for MembershipMutationError {
65    fn from(error: crate::sync::store::StorePullError) -> Self {
66        Self::Pull(Box::new(error))
67    }
68}
69
70impl From<crate::sync::store::AnchoredChainError> for MembershipMutationError {
71    fn from(error: crate::sync::store::AnchoredChainError) -> Self {
72        Self::AnchoredChain(Box::new(error))
73    }
74}