cipherstash_dynamodb/errors/
mod.rs1use aws_sdk_dynamodb::{error::SdkError, operation};
2use miette::Diagnostic;
3use thiserror::Error;
4
5use crate::traits::PrimaryKeyError;
6pub use crate::{
7 crypto::{CryptoError, SealError},
8 traits::{ReadConversionError, WriteConversionError},
9};
10
11pub use cipherstash_client::{
12 config::errors::ConfigError, encryption::EncryptionError, zerokms::Error as ZeroKmsError,
13};
14
15pub use aws_sdk_dynamodb::error::BuildError;
16
17#[derive(Error, Debug, Diagnostic)]
19pub enum PutError {
20 #[error("PrimaryKeyError: {0}")]
21 PrimaryKeyError(#[from] PrimaryKeyError),
22 #[error("AwsBuildError: {0}")]
24 AwsBuildError(#[from] BuildError),
25 #[error("Write Conversion Error: {0}")]
26 WriteConversion(#[from] WriteConversionError),
27 #[error("SealError: {0}")]
28 Seal(#[from] SealError),
29 #[error("CryptoError: {0}")]
30 Crypto(#[from] CryptoError),
31 #[error("Encryption Error: {0}")]
32 Encryption(#[from] EncryptionError),
33
34 #[error(transparent)]
35 DynamoError(#[from] SdkError<operation::transact_write_items::TransactWriteItemsError>),
36}
37
38#[derive(Error, Debug, Diagnostic)]
40pub enum GetError {
41 #[error(transparent)]
42 PrimaryKeyError(#[from] PrimaryKeyError),
43 #[error(transparent)]
44 DecryptError(#[from] DecryptError),
45 #[error(transparent)]
46 Encryption(#[from] EncryptionError),
47 #[error("AwsError: {0}")]
48 Aws(String),
49}
50
51#[derive(Error, Debug, Diagnostic)]
53pub enum DeleteError {
54 #[error("PrimaryKeyError: {0}")]
55 PrimaryKeyError(#[from] PrimaryKeyError),
56 #[error("Encryption Error: {0}")]
57 Encryption(#[from] EncryptionError),
58 #[error("AwsBuildError: {0}")]
59 AwsBuildError(#[from] BuildError),
60 #[error("AwsError: {0}")]
61 Aws(String),
62}
63
64#[derive(Error, Debug, Diagnostic)]
66pub enum DecryptError {
67 #[error("ReadConversionError: {0}")]
68 ReadConversionError(#[from] ReadConversionError),
69 #[error("SealError: {0}")]
70 SealError(#[from] SealError),
71}
72
73#[derive(Error, Debug, Diagnostic)]
75pub enum QueryError {
76 #[error("PrimaryKeyError: {0}")]
77 PrimaryKeyError(#[from] PrimaryKeyError),
78 #[error("InvaldQuery: {0}")]
79 InvalidQuery(String),
80 #[error("CryptoError: {0}")]
81 CryptoError(#[from] CryptoError),
82 #[error("EncryptionError: {0}")]
83 EncryptionError(#[from] EncryptionError),
84 #[error("Decrypt Error: {0}")]
85 DecryptError(#[from] DecryptError),
86 #[error("{0}")]
87 Other(String),
88
89 #[error(transparent)]
90 DynamoError(#[from] SdkError<operation::query::QueryError>),
91}
92
93pub trait DynamoError: std::error::Error + Sized {}
94
95#[derive(Error, Debug, Diagnostic)]
97pub enum InitError {
98 #[error("ConfigError: {0}")]
99 Config(#[from] ConfigError),
100 #[error(transparent)]
101 ZeroKmsError(#[from] ZeroKmsError),
102}
103
104#[derive(Error, Debug, Diagnostic)]
106pub enum Error {
107 #[error("InitError: {0}")]
108 InitError(#[from] InitError),
109 #[error("PutError: {0}")]
110 PutError(#[from] PutError),
111 #[error("GetError: {0}")]
112 GetError(#[from] GetError),
113 #[error("DeleteError: {0}")]
114 DeleteError(#[from] DeleteError),
115 #[error(transparent)]
116 QueryError(#[from] QueryError),
117}