error.rs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. //! SQLite Database Error
  2. use thiserror::Error;
  3. /// SQLite Database Error
  4. #[derive(Debug, Error)]
  5. pub enum Error {
  6. /// SQLX Error
  7. #[error(transparent)]
  8. Sqlite(#[from] rusqlite::Error),
  9. /// Duplicate entry
  10. #[error("Record already exists")]
  11. Duplicate,
  12. /// Pool error
  13. #[error(transparent)]
  14. Pool(#[from] crate::pool::Error<rusqlite::Error>),
  15. /// Invalid UUID
  16. #[error("Invalid UUID: {0}")]
  17. InvalidUuid(String),
  18. /// QuoteNotFound
  19. #[error("Quote not found")]
  20. QuoteNotFound,
  21. /// Missing named parameter
  22. #[error("Missing named parameter {0}")]
  23. MissingParameter(String),
  24. /// Communication error with the database
  25. #[error("Internal communication error")]
  26. Communication,
  27. /// Invalid response from the database thread
  28. #[error("Unexpected database response")]
  29. InvalidDbResponse,
  30. /// Invalid db type
  31. #[error("Invalid type from db, expected {0} got {1}")]
  32. InvalidType(String, String),
  33. /// Missing columns
  34. #[error("Not enough elements: expected {0}, got {1}")]
  35. MissingColumn(usize, usize),
  36. /// Invalid data conversion in column
  37. #[error("Error converting {0} to {1}")]
  38. InvalidConversion(String, String),
  39. /// NUT00 Error
  40. #[error(transparent)]
  41. CDKNUT00(#[from] cdk_common::nuts::nut00::Error),
  42. /// NUT01 Error
  43. #[error(transparent)]
  44. CDKNUT01(#[from] cdk_common::nuts::nut01::Error),
  45. /// NUT02 Error
  46. #[error(transparent)]
  47. CDKNUT02(#[from] cdk_common::nuts::nut02::Error),
  48. /// NUT04 Error
  49. #[error(transparent)]
  50. CDKNUT04(#[from] cdk_common::nuts::nut04::Error),
  51. /// NUT05 Error
  52. #[error(transparent)]
  53. CDKNUT05(#[from] cdk_common::nuts::nut05::Error),
  54. /// NUT07 Error
  55. #[error(transparent)]
  56. CDKNUT07(#[from] cdk_common::nuts::nut07::Error),
  57. /// NUT23 Error
  58. #[error(transparent)]
  59. CDKNUT23(#[from] cdk_common::nuts::nut23::Error),
  60. /// Secret Error
  61. #[error(transparent)]
  62. CDKSECRET(#[from] cdk_common::secret::Error),
  63. /// BIP32 Error
  64. #[error(transparent)]
  65. BIP32(#[from] bitcoin::bip32::Error),
  66. /// Mint Url Error
  67. #[error(transparent)]
  68. MintUrl(#[from] cdk_common::mint_url::Error),
  69. /// Could Not Initialize Database
  70. #[error("Could not initialize database")]
  71. CouldNotInitialize,
  72. /// Invalid Database Path
  73. #[error("Invalid database path")]
  74. InvalidDbPath,
  75. /// Serde Error
  76. #[error(transparent)]
  77. Serde(#[from] serde_json::Error),
  78. /// Unknown Mint Info
  79. #[error("Unknown mint info")]
  80. UnknownMintInfo,
  81. /// Unknown quote TTL
  82. #[error("Unknown quote TTL")]
  83. UnknownQuoteTTL,
  84. /// Proof not found
  85. #[error("Proof not found")]
  86. ProofNotFound,
  87. /// Invalid keyset ID
  88. #[error("Invalid keyset ID")]
  89. InvalidKeysetId,
  90. }
  91. impl From<Error> for cdk_common::database::Error {
  92. fn from(e: Error) -> Self {
  93. match e {
  94. Error::Duplicate => Self::Duplicate,
  95. e => Self::Database(Box::new(e)),
  96. }
  97. }
  98. }