Introduce cashu to host the shared types, traits and other common code (#519)

---------

Co-authored-by: thesimplekid <tsk@thesimplekid.com>
This commit is contained in:
C
2025-01-12 09:50:05 -03:00
committed by GitHub
parent 8ac766dd62
commit 8fe0982c6d
93 changed files with 1341 additions and 963 deletions

View File

@@ -7,26 +7,31 @@ description = "SQLite storage backend for CDK"
license = "MIT"
homepage = "https://github.com/cashubtc/cdk"
repository = "https://github.com/cashubtc/cdk.git"
rust-version = "1.66.0" # MSRV
rust-version = "1.66.0" # MSRV
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[features]
default = ["mint", "wallet"]
mint = ["cdk/mint"]
wallet = ["cdk/wallet"]
mint = []
wallet = []
[dependencies]
async-trait = "0.1"
cdk = { path = "../cdk", version = "0.6.0", default-features = false }
cdk-common = { path = "../cdk-common", version = "0.6.0" }
bitcoin = { version = "0.32.2", default-features = false }
sqlx = { version = "0.6.3", default-features = false, features = ["runtime-tokio-rustls", "sqlite", "macros", "migrate", "uuid"] }
thiserror = "1"
tokio = { version = "1", features = [
"time",
sqlx = { version = "0.6.3", default-features = false, features = [
"runtime-tokio-rustls",
"sqlite",
"macros",
"sync",
"migrate",
"uuid",
] }
thiserror = "1"
tokio = { version = "1", features = ["time", "macros", "sync"] }
tracing = { version = "0.1", default-features = false, features = [
"attributes",
"log",
] }
tracing = { version = "0.1", default-features = false, features = ["attributes", "log"] }
serde_json = "1"
lightning-invoice = { version = "0.32.0", features = ["serde", "std"] }
uuid = { version = "1", features = ["v4", "serde"] }

View File

@@ -10,31 +10,31 @@ pub enum Error {
SQLX(#[from] sqlx::Error),
/// NUT00 Error
#[error(transparent)]
CDKNUT00(#[from] cdk::nuts::nut00::Error),
CDKNUT00(#[from] cdk_common::nuts::nut00::Error),
/// NUT01 Error
#[error(transparent)]
CDKNUT01(#[from] cdk::nuts::nut01::Error),
CDKNUT01(#[from] cdk_common::nuts::nut01::Error),
/// NUT02 Error
#[error(transparent)]
CDKNUT02(#[from] cdk::nuts::nut02::Error),
CDKNUT02(#[from] cdk_common::nuts::nut02::Error),
/// NUT04 Error
#[error(transparent)]
CDKNUT04(#[from] cdk::nuts::nut04::Error),
CDKNUT04(#[from] cdk_common::nuts::nut04::Error),
/// NUT05 Error
#[error(transparent)]
CDKNUT05(#[from] cdk::nuts::nut05::Error),
CDKNUT05(#[from] cdk_common::nuts::nut05::Error),
/// NUT07 Error
#[error(transparent)]
CDKNUT07(#[from] cdk::nuts::nut07::Error),
CDKNUT07(#[from] cdk_common::nuts::nut07::Error),
/// Secret Error
#[error(transparent)]
CDKSECRET(#[from] cdk::secret::Error),
CDKSECRET(#[from] cdk_common::secret::Error),
/// BIP32 Error
#[error(transparent)]
BIP32(#[from] bitcoin::bip32::Error),
/// Mint Url Error
#[error(transparent)]
MintUrl(#[from] cdk::mint_url::Error),
MintUrl(#[from] cdk_common::mint_url::Error),
/// Could Not Initialize Database
#[error("Could not initialize database")]
CouldNotInitialize,
@@ -46,7 +46,7 @@ pub enum Error {
Serde(#[from] serde_json::Error),
}
impl From<Error> for cdk::cdk_database::Error {
impl From<Error> for cdk_common::database::Error {
fn from(e: Error) -> Self {
Self::Database(Box::new(e))
}

View File

@@ -7,18 +7,17 @@ use std::time::Duration;
use async_trait::async_trait;
use bitcoin::bip32::DerivationPath;
use cdk::cdk_database::{self, MintDatabase};
use cdk::mint::{MintKeySetInfo, MintQuote};
use cdk::mint_url::MintUrl;
use cdk::nuts::nut00::ProofsMethods;
use cdk::nuts::nut05::QuoteState;
use cdk::nuts::{
BlindSignature, BlindSignatureDleq, CurrencyUnit, Id, MeltBolt11Request, MeltQuoteState,
MintQuoteState, PaymentMethod, Proof, Proofs, PublicKey, SecretKey, State,
use cdk_common::common::LnKey;
use cdk_common::database::{self, MintDatabase};
use cdk_common::mint::{self, MintKeySetInfo, MintQuote};
use cdk_common::mint_url::MintUrl;
use cdk_common::nut00::ProofsMethods;
use cdk_common::nut05::QuoteState;
use cdk_common::secret::Secret;
use cdk_common::{
Amount, BlindSignature, BlindSignatureDleq, CurrencyUnit, Id, MeltBolt11Request,
MeltQuoteState, MintQuoteState, PaymentMethod, Proof, Proofs, PublicKey, SecretKey, State,
};
use cdk::secret::Secret;
use cdk::types::LnKey;
use cdk::{mint, Amount};
use error::Error;
use lightning_invoice::Bolt11Invoice;
use sqlx::sqlite::{SqliteConnectOptions, SqlitePool, SqlitePoolOptions, SqliteRow};
@@ -63,7 +62,7 @@ impl MintSqliteDatabase {
#[async_trait]
impl MintDatabase for MintSqliteDatabase {
type Err = cdk_database::Error;
type Err = database::Error;
async fn set_active_keyset(&self, unit: CurrencyUnit, id: Id) -> Result<(), Self::Err> {
let mut transaction = self.pool.begin().await.map_err(Error::from)?;

View File

@@ -13,28 +13,28 @@ pub enum Error {
Serde(#[from] serde_json::Error),
/// NUT00 Error
#[error(transparent)]
CDKNUT00(#[from] cdk::nuts::nut00::Error),
CDKNUT00(#[from] cdk_common::nuts::nut00::Error),
/// NUT01 Error
#[error(transparent)]
CDKNUT01(#[from] cdk::nuts::nut01::Error),
CDKNUT01(#[from] cdk_common::nuts::nut01::Error),
/// NUT02 Error
#[error(transparent)]
CDKNUT02(#[from] cdk::nuts::nut02::Error),
CDKNUT02(#[from] cdk_common::nuts::nut02::Error),
/// NUT04 Error
#[error(transparent)]
CDKNUT04(#[from] cdk::nuts::nut04::Error),
CDKNUT04(#[from] cdk_common::nuts::nut04::Error),
/// NUT05 Error
#[error(transparent)]
CDKNUT05(#[from] cdk::nuts::nut05::Error),
CDKNUT05(#[from] cdk_common::nuts::nut05::Error),
/// NUT07 Error
#[error(transparent)]
CDKNUT07(#[from] cdk::nuts::nut07::Error),
CDKNUT07(#[from] cdk_common::nuts::nut07::Error),
/// Secret Error
#[error(transparent)]
CDKSECRET(#[from] cdk::secret::Error),
CDKSECRET(#[from] cdk_common::secret::Error),
/// Mint Url
#[error(transparent)]
MintUrl(#[from] cdk::mint_url::Error),
MintUrl(#[from] cdk_common::mint_url::Error),
/// BIP32 Error
#[error(transparent)]
BIP32(#[from] bitcoin::bip32::Error),
@@ -46,7 +46,7 @@ pub enum Error {
InvalidDbPath,
}
impl From<Error> for cdk::cdk_database::Error {
impl From<Error> for cdk_common::database::Error {
fn from(e: Error) -> Self {
Self::Database(Box::new(e))
}

View File

@@ -5,17 +5,16 @@ use std::path::Path;
use std::str::FromStr;
use async_trait::async_trait;
use cdk::amount::Amount;
use cdk::cdk_database::{self, WalletDatabase};
use cdk::mint_url::MintUrl;
use cdk::nuts::{
CurrencyUnit, Id, KeySetInfo, Keys, MeltQuoteState, MintInfo, MintQuoteState, Proof, PublicKey,
SecretKey, SpendingConditions, State,
use cdk_common::common::ProofInfo;
use cdk_common::database::WalletDatabase;
use cdk_common::mint_url::MintUrl;
use cdk_common::nuts::{MeltQuoteState, MintQuoteState};
use cdk_common::secret::Secret;
use cdk_common::wallet::{self, MintQuote};
use cdk_common::{
database, Amount, CurrencyUnit, Id, KeySetInfo, Keys, MintInfo, Proof, PublicKey, SecretKey,
SpendingConditions, State,
};
use cdk::secret::Secret;
use cdk::types::ProofInfo;
use cdk::wallet;
use cdk::wallet::MintQuote;
use error::Error;
use sqlx::sqlite::{SqliteConnectOptions, SqlitePool, SqliteRow};
use sqlx::{ConnectOptions, Row};
@@ -54,7 +53,7 @@ impl WalletSqliteDatabase {
.expect("Could not run migrations");
}
async fn set_proof_state(&self, y: PublicKey, state: State) -> Result<(), cdk_database::Error> {
async fn set_proof_state(&self, y: PublicKey, state: State) -> Result<(), database::Error> {
sqlx::query(
r#"
UPDATE proof
@@ -74,7 +73,7 @@ impl WalletSqliteDatabase {
#[async_trait]
impl WalletDatabase for WalletSqliteDatabase {
type Err = cdk_database::Error;
type Err = database::Error;
#[instrument(skip(self, mint_info))]
async fn add_mint(