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