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(all(feature = "mint", feature = "auth"))]
9pub use mint::MintAuthDatabase;
10#[cfg(feature = "mint")]
11pub use mint::{
12    Database as MintDatabase, KeysDatabase as MintKeysDatabase,
13    ProofsDatabase as MintProofsDatabase, QuotesDatabase as MintQuotesDatabase,
14    SignaturesDatabase as MintSignaturesDatabase,
15};
16#[cfg(feature = "wallet")]
17pub use wallet::Database as WalletDatabase;
18
19/// CDK_database error
20#[derive(Debug, thiserror::Error)]
21pub enum Error {
22    /// Database Error
23    #[error(transparent)]
24    Database(Box<dyn std::error::Error + Send + Sync>),
25    /// DHKE error
26    #[error(transparent)]
27    DHKE(#[from] crate::dhke::Error),
28    /// NUT00 Error
29    #[error(transparent)]
30    NUT00(#[from] crate::nuts::nut00::Error),
31    /// NUT02 Error
32    #[error(transparent)]
33    NUT02(#[from] crate::nuts::nut02::Error),
34    /// NUT22 Error
35    #[error(transparent)]
36    #[cfg(feature = "auth")]
37    NUT22(#[from] crate::nuts::nut22::Error),
38    /// Serde Error
39    #[error(transparent)]
40    Serde(#[from] serde_json::Error),
41    /// Unknown Quote
42    #[error("Unknown Quote")]
43    UnknownQuote,
44    /// Attempt to remove spent proof
45    #[error("Attempt to remove spent proof")]
46    AttemptRemoveSpentProof,
47    /// Attempt to update state of spent proof
48    #[error("Attempt to update state of spent proof")]
49    AttemptUpdateSpentProof,
50    /// Proof not found
51    #[error("Proof not found")]
52    ProofNotFound,
53    /// Invalid keyset
54    #[error("Unknown or invalid keyset")]
55    InvalidKeysetId,
56    #[cfg(feature = "mint")]
57    /// Invalid state transition
58    #[error("Invalid state transition")]
59    InvalidStateTransition(crate::state::Error),
60}
61
62#[cfg(feature = "mint")]
63impl From<crate::state::Error> for Error {
64    fn from(state: crate::state::Error) -> Self {
65        match state {
66            crate::state::Error::AlreadySpent => Error::AttemptUpdateSpentProof,
67            _ => Error::InvalidStateTransition(state),
68        }
69    }
70}