cdk_sqlite/mint/
memory.rs1use std::collections::HashMap;
3
4use cdk_common::common::PaymentProcessorKey;
5use cdk_common::database::{
6 self, MintDatabase, MintKeysDatabase, MintProofsDatabase, MintQuotesDatabase,
7};
8use cdk_common::mint::{self, MintKeySetInfo, MintQuote};
9use cdk_common::nuts::{CurrencyUnit, Id, MeltRequest, Proofs};
10use cdk_common::MintInfo;
11use uuid::Uuid;
12
13use super::MintSqliteDatabase;
14
15pub async fn empty() -> Result<MintSqliteDatabase, database::Error> {
17 #[cfg(not(feature = "sqlcipher"))]
18 let db = MintSqliteDatabase::new(":memory:").await?;
19 #[cfg(feature = "sqlcipher")]
20 let db = MintSqliteDatabase::new(":memory:", "memory".to_string()).await?;
21 Ok(db)
22}
23
24#[allow(clippy::too_many_arguments)]
26pub async fn new_with_state(
27 active_keysets: HashMap<CurrencyUnit, Id>,
28 keysets: Vec<MintKeySetInfo>,
29 mint_quotes: Vec<MintQuote>,
30 melt_quotes: Vec<mint::MeltQuote>,
31 pending_proofs: Proofs,
32 spent_proofs: Proofs,
33 melt_request: Vec<(MeltRequest<Uuid>, PaymentProcessorKey)>,
34 mint_info: MintInfo,
35) -> Result<MintSqliteDatabase, database::Error> {
36 let db = empty().await?;
37
38 for active_keyset in active_keysets {
39 db.set_active_keyset(active_keyset.0, active_keyset.1)
40 .await?;
41 }
42
43 for keyset in keysets {
44 db.add_keyset_info(keyset).await?;
45 }
46
47 for quote in mint_quotes {
48 db.add_mint_quote(quote).await?;
49 }
50
51 for quote in melt_quotes {
52 db.add_melt_quote(quote).await?;
53 }
54
55 db.add_proofs(pending_proofs, None).await?;
56 db.add_proofs(spent_proofs, None).await?;
57
58 for (melt_request, ln_key) in melt_request {
59 db.add_melt_request(melt_request, ln_key).await?;
60 }
61
62 db.set_mint_info(mint_info).await?;
63
64 Ok(db)
65}