coven_replication/sync/store/membership/mutation/
error.rs1use 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}