cdk_common/database/
mod.rs1#[cfg(feature = "mint")]
4pub mod mint;
5#[cfg(feature = "wallet")]
6mod wallet;
7
8#[cfg(feature = "mint")]
9pub use mint::{
10 Database as MintDatabase, DbTransactionFinalizer as MintDbWriterFinalizer,
11 KeysDatabase as MintKeysDatabase, KeysDatabaseTransaction as MintKeyDatabaseTransaction,
12 ProofsDatabase as MintProofsDatabase, ProofsTransaction as MintProofsTransaction,
13 QuotesDatabase as MintQuotesDatabase, QuotesTransaction as MintQuotesTransaction,
14 SignaturesDatabase as MintSignaturesDatabase,
15 SignaturesTransaction as MintSignatureTransaction, Transaction as MintTransaction,
16};
17#[cfg(all(feature = "mint", feature = "auth"))]
18pub use mint::{MintAuthDatabase, MintAuthTransaction};
19#[cfg(feature = "wallet")]
20pub use wallet::Database as WalletDatabase;
21
22#[derive(thiserror::Error, Debug)]
24pub enum ConversionError {
25 #[error("Not enough elements: expected {0}, got {1}")]
27 MissingColumn(usize, usize),
28
29 #[error("Missing parameter {0}")]
31 MissingParameter(String),
32
33 #[error("Invalid type from db, expected {0} got {1}")]
35 InvalidType(String, String),
36
37 #[error("Error converting {1}, expecting type {0}")]
39 InvalidConversion(String, String),
40
41 #[error(transparent)]
43 MintUrl(#[from] crate::mint_url::Error),
44
45 #[error(transparent)]
47 CDKNUT00(#[from] crate::nuts::nut00::Error),
48
49 #[error(transparent)]
51 CDKNUT01(#[from] crate::nuts::nut01::Error),
52
53 #[error(transparent)]
55 CDKNUT02(#[from] crate::nuts::nut02::Error),
56
57 #[error(transparent)]
59 CDKNUT04(#[from] crate::nuts::nut04::Error),
60
61 #[error(transparent)]
63 CDKNUT05(#[from] crate::nuts::nut05::Error),
64
65 #[error(transparent)]
67 CDKNUT07(#[from] crate::nuts::nut07::Error),
68
69 #[error(transparent)]
71 CDKNUT23(#[from] crate::nuts::nut23::Error),
72
73 #[error(transparent)]
75 CDKSECRET(#[from] crate::secret::Error),
76
77 #[error(transparent)]
79 Serde(#[from] serde_json::Error),
80
81 #[error(transparent)]
83 BIP32(#[from] bitcoin::bip32::Error),
84
85 #[error(transparent)]
87 Generic(#[from] Box<crate::Error>),
88}
89
90impl From<crate::Error> for ConversionError {
91 fn from(err: crate::Error) -> Self {
92 ConversionError::Generic(Box::new(err))
93 }
94}
95
96#[derive(Debug, thiserror::Error)]
98pub enum Error {
99 #[error(transparent)]
101 Database(Box<dyn std::error::Error + Send + Sync>),
102
103 #[error("Duplicate entry")]
105 Duplicate,
106 #[error("Amount overflow")]
108 AmountOverflow,
109 #[error("Amount zero")]
111 AmountZero,
112
113 #[error(transparent)]
115 DHKE(#[from] crate::dhke::Error),
116 #[error(transparent)]
118 NUT00(#[from] crate::nuts::nut00::Error),
119 #[error(transparent)]
121 NUT01(#[from] crate::nuts::nut01::Error),
122 #[error(transparent)]
124 NUT02(#[from] crate::nuts::nut02::Error),
125 #[error(transparent)]
127 #[cfg(feature = "auth")]
128 NUT22(#[from] crate::nuts::nut22::Error),
129 #[error(transparent)]
131 Serde(#[from] serde_json::Error),
132 #[error("Unknown Quote")]
134 UnknownQuote,
135 #[error("Attempt to remove spent proof")]
137 AttemptRemoveSpentProof,
138 #[error("Attempt to update state of spent proof")]
140 AttemptUpdateSpentProof,
141 #[error("Proof not found")]
143 ProofNotFound,
144 #[error("Unknown or invalid keyset")]
146 InvalidKeysetId,
147 #[cfg(feature = "mint")]
148 #[error("Invalid state transition")]
150 InvalidStateTransition(crate::state::Error),
151
152 #[error("Invalid credentials {0}")]
154 InvalidConnectionSettings(String),
155
156 #[error("Invalid database response")]
158 InvalidDbResponse,
159
160 #[error("Internal {0}")]
162 Internal(String),
163
164 #[error(transparent)]
166 Conversion(#[from] ConversionError),
167
168 #[error("Missing placeholder value {0}")]
170 MissingPlaceholder(String),
171
172 #[error("Unknown quote ttl")]
174 UnknownQuoteTTL,
175
176 #[error("Invalid UUID: {0}")]
178 InvalidUuid(String),
179
180 #[error("Quote not found")]
182 QuoteNotFound,
183}
184
185#[cfg(feature = "mint")]
186impl From<crate::state::Error> for Error {
187 fn from(state: crate::state::Error) -> Self {
188 match state {
189 crate::state::Error::AlreadySpent => Error::AttemptUpdateSpentProof,
190 _ => Error::InvalidStateTransition(state),
191 }
192 }
193}