cdk_common/database/
mod.rs

1//! CDK Database
2
3#[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/// CDK_database error
23#[derive(Debug, thiserror::Error)]
24pub enum Error {
25    /// Database Error
26    #[error(transparent)]
27    Database(Box<dyn std::error::Error + Send + Sync>),
28
29    /// Duplicate entry
30    #[error("Duplicate entry")]
31    Duplicate,
32
33    /// DHKE error
34    #[error(transparent)]
35    DHKE(#[from] crate::dhke::Error),
36    /// NUT00 Error
37    #[error(transparent)]
38    NUT00(#[from] crate::nuts::nut00::Error),
39    /// NUT02 Error
40    #[error(transparent)]
41    NUT02(#[from] crate::nuts::nut02::Error),
42    /// NUT22 Error
43    #[error(transparent)]
44    #[cfg(feature = "auth")]
45    NUT22(#[from] crate::nuts::nut22::Error),
46    /// Serde Error
47    #[error(transparent)]
48    Serde(#[from] serde_json::Error),
49    /// Unknown Quote
50    #[error("Unknown Quote")]
51    UnknownQuote,
52    /// Attempt to remove spent proof
53    #[error("Attempt to remove spent proof")]
54    AttemptRemoveSpentProof,
55    /// Attempt to update state of spent proof
56    #[error("Attempt to update state of spent proof")]
57    AttemptUpdateSpentProof,
58    /// Proof not found
59    #[error("Proof not found")]
60    ProofNotFound,
61    /// Invalid keyset
62    #[error("Unknown or invalid keyset")]
63    InvalidKeysetId,
64    #[cfg(feature = "mint")]
65    /// Invalid state transition
66    #[error("Invalid state transition")]
67    InvalidStateTransition(crate::state::Error),
68}
69
70#[cfg(feature = "mint")]
71impl From<crate::state::Error> for Error {
72    fn from(state: crate::state::Error) -> Self {
73        match state {
74            crate::state::Error::AlreadySpent => Error::AttemptUpdateSpentProof,
75            _ => Error::InvalidStateTransition(state),
76        }
77    }
78}