|
@@ -46,6 +46,9 @@ pub enum Error {
|
|
|
/// NUT00 Error
|
|
|
#[error(transparent)]
|
|
|
NUT00(cdk::nuts::nut00::Error),
|
|
|
+ #[error("Not found")]
|
|
|
+ /// Not Found
|
|
|
+ NotFound,
|
|
|
}
|
|
|
impl From<Error> for cdk::cdk_database::Error {
|
|
|
fn from(e: Error) -> Self {
|
|
@@ -149,7 +152,7 @@ impl WalletDatabase for WalletRexieDatabase {
|
|
|
|
|
|
let mint_url = serde_wasm_bindgen::to_value(&mint_url).map_err(Error::from)?;
|
|
|
|
|
|
- mints_store.delete(&mint_url).await.map_err(Error::from)?;
|
|
|
+ mints_store.delete(mint_url).await.map_err(Error::from)?;
|
|
|
|
|
|
transaction.done().await.map_err(Error::from)?;
|
|
|
|
|
@@ -166,10 +169,11 @@ impl WalletDatabase for WalletRexieDatabase {
|
|
|
let mints_store = transaction.store(MINTS).map_err(Error::from)?;
|
|
|
|
|
|
let mint_url = serde_wasm_bindgen::to_value(&mint_url).map_err(Error::from)?;
|
|
|
- let mint_info = mints_store.get(&mint_url).await.map_err(Error::from)?;
|
|
|
-
|
|
|
- let mint_info: Option<MintInfo> =
|
|
|
- serde_wasm_bindgen::from_value(mint_info).map_err(Error::from)?;
|
|
|
+ let mint_info = mints_store
|
|
|
+ .get(mint_url)
|
|
|
+ .await
|
|
|
+ .map_err(Error::from)?
|
|
|
+ .and_then(|m| serde_wasm_bindgen::from_value(m).ok());
|
|
|
|
|
|
Ok(mint_info)
|
|
|
}
|
|
@@ -184,7 +188,7 @@ impl WalletDatabase for WalletRexieDatabase {
|
|
|
let mints_store = transaction.store(MINTS).map_err(Error::from)?;
|
|
|
|
|
|
let mints = mints_store
|
|
|
- .get_all(None, None, None, None)
|
|
|
+ .scan(None, None, None, None)
|
|
|
.await
|
|
|
.map_err(Error::from)?;
|
|
|
|
|
@@ -265,13 +269,11 @@ impl WalletDatabase for WalletRexieDatabase {
|
|
|
|
|
|
let mint_url = serde_wasm_bindgen::to_value(&mint_url).map_err(Error::from)?;
|
|
|
|
|
|
- let mint_keysets = mint_keysets_store
|
|
|
- .get(&mint_url)
|
|
|
+ let mut mint_keysets = mint_keysets_store
|
|
|
+ .get(mint_url.clone())
|
|
|
.await
|
|
|
- .map_err(Error::from)?;
|
|
|
-
|
|
|
- let mut mint_keysets: Option<HashSet<Id>> =
|
|
|
- serde_wasm_bindgen::from_value(mint_keysets).map_err(Error::from)?;
|
|
|
+ .map_err(Error::from)?
|
|
|
+ .and_then(|m| serde_wasm_bindgen::from_value(m).ok());
|
|
|
|
|
|
let new_keyset_ids: Vec<Id> = keysets.iter().map(|k| k.id).collect();
|
|
|
|
|
@@ -315,10 +317,11 @@ impl WalletDatabase for WalletRexieDatabase {
|
|
|
let mints_store = transaction.store(MINT_KEYSETS).map_err(Error::from)?;
|
|
|
|
|
|
let mint_url = serde_wasm_bindgen::to_value(&mint_url).map_err(Error::from)?;
|
|
|
- let mint_keysets = mints_store.get(&mint_url).await.map_err(Error::from)?;
|
|
|
-
|
|
|
- let mint_keysets: Option<HashSet<Id>> =
|
|
|
- serde_wasm_bindgen::from_value(mint_keysets).map_err(Error::from)?;
|
|
|
+ let mint_keysets: Option<HashSet<Id>> = mints_store
|
|
|
+ .get(mint_url)
|
|
|
+ .await
|
|
|
+ .map_err(Error::from)?
|
|
|
+ .and_then(|m| serde_wasm_bindgen::from_value(m).ok());
|
|
|
|
|
|
let keysets_store = transaction.store(KEYSETS).map_err(Error::from)?;
|
|
|
|
|
@@ -329,13 +332,17 @@ impl WalletDatabase for WalletRexieDatabase {
|
|
|
for mint_keyset in mint_keysets {
|
|
|
let id = serde_wasm_bindgen::to_value(&mint_keyset).map_err(Error::from)?;
|
|
|
|
|
|
- let keyset = keysets_store.get(&id).await.map_err(Error::from)?;
|
|
|
-
|
|
|
- let keyset = serde_wasm_bindgen::from_value(keyset).map_err(Error::from)?;
|
|
|
+ let keyset = keysets_store
|
|
|
+ .get(id)
|
|
|
+ .await
|
|
|
+ .map_err(Error::from)?
|
|
|
+ .and_then(|k| serde_wasm_bindgen::from_value(k).ok());
|
|
|
|
|
|
keysets.push(keyset);
|
|
|
}
|
|
|
|
|
|
+ let keysets = keysets.iter().flatten().cloned().collect();
|
|
|
+
|
|
|
Some(keysets)
|
|
|
}
|
|
|
None => None,
|
|
@@ -356,9 +363,13 @@ impl WalletDatabase for WalletRexieDatabase {
|
|
|
|
|
|
let keyset_id = serde_wasm_bindgen::to_value(keyset_id).map_err(Error::from)?;
|
|
|
|
|
|
- let keyset = keysets_store.get(&keyset_id).await.map_err(Error::from)?;
|
|
|
+ let keyset = keysets_store
|
|
|
+ .get(keyset_id)
|
|
|
+ .await
|
|
|
+ .map_err(Error::from)?
|
|
|
+ .and_then(|k| serde_wasm_bindgen::from_value(k).ok());
|
|
|
|
|
|
- Ok(serde_wasm_bindgen::from_value(keyset).map_err(Error::from)?)
|
|
|
+ Ok(keyset)
|
|
|
}
|
|
|
|
|
|
async fn add_mint_quote(&self, quote: MintQuote) -> Result<(), Self::Err> {
|
|
@@ -393,10 +404,11 @@ impl WalletDatabase for WalletRexieDatabase {
|
|
|
let quotes_store = transaction.store(MINT_QUOTES).map_err(Error::from)?;
|
|
|
|
|
|
let quote_id = serde_wasm_bindgen::to_value("e_id).map_err(Error::from)?;
|
|
|
- let quote = quotes_store.get("e_id).await.map_err(Error::from)?;
|
|
|
-
|
|
|
- let quote: Option<MintQuote> =
|
|
|
- serde_wasm_bindgen::from_value(quote).map_err(Error::from)?;
|
|
|
+ let quote = quotes_store
|
|
|
+ .get(quote_id)
|
|
|
+ .await
|
|
|
+ .map_err(Error::from)?
|
|
|
+ .and_then(|q| serde_wasm_bindgen::from_value(q).ok());
|
|
|
|
|
|
Ok(quote)
|
|
|
}
|
|
@@ -411,7 +423,7 @@ impl WalletDatabase for WalletRexieDatabase {
|
|
|
let quotes_store = transaction.store(MINT_QUOTES).map_err(Error::from)?;
|
|
|
|
|
|
let quotes = quotes_store
|
|
|
- .get_all(None, None, None, None)
|
|
|
+ .scan(None, None, None, None)
|
|
|
.await
|
|
|
.map_err(Error::from)?;
|
|
|
|
|
@@ -432,7 +444,7 @@ impl WalletDatabase for WalletRexieDatabase {
|
|
|
|
|
|
let quote_id = serde_wasm_bindgen::to_value("e_id).map_err(Error::from)?;
|
|
|
|
|
|
- quotes_store.delete("e_id).await.map_err(Error::from)?;
|
|
|
+ quotes_store.delete(quote_id).await.map_err(Error::from)?;
|
|
|
|
|
|
transaction.done().await.map_err(Error::from)?;
|
|
|
|
|
@@ -471,10 +483,11 @@ impl WalletDatabase for WalletRexieDatabase {
|
|
|
let quotes_store = transaction.store(MELT_QUOTES).map_err(Error::from)?;
|
|
|
|
|
|
let quote_id = serde_wasm_bindgen::to_value("e_id).map_err(Error::from)?;
|
|
|
- let keysets = quotes_store.get("e_id).await.map_err(Error::from)?;
|
|
|
-
|
|
|
- let quote: Option<MeltQuote> =
|
|
|
- serde_wasm_bindgen::from_value(keysets).map_err(Error::from)?;
|
|
|
+ let quote = quotes_store
|
|
|
+ .get(quote_id)
|
|
|
+ .await
|
|
|
+ .map_err(Error::from)?
|
|
|
+ .and_then(|q| serde_wasm_bindgen::from_value(q).ok());
|
|
|
|
|
|
Ok(quote)
|
|
|
}
|
|
@@ -490,7 +503,7 @@ impl WalletDatabase for WalletRexieDatabase {
|
|
|
|
|
|
let quote_id = serde_wasm_bindgen::to_value("e_id).map_err(Error::from)?;
|
|
|
|
|
|
- quotes_store.delete("e_id).await.map_err(Error::from)?;
|
|
|
+ quotes_store.delete(quote_id).await.map_err(Error::from)?;
|
|
|
|
|
|
transaction.done().await.map_err(Error::from)?;
|
|
|
|
|
@@ -529,9 +542,11 @@ impl WalletDatabase for WalletRexieDatabase {
|
|
|
let keys_store = transaction.store(MINT_KEYS).map_err(Error::from)?;
|
|
|
|
|
|
let keyset_id = serde_wasm_bindgen::to_value(id).map_err(Error::from)?;
|
|
|
- let keys = keys_store.get(&keyset_id).await.map_err(Error::from)?;
|
|
|
-
|
|
|
- let keys: Option<Keys> = serde_wasm_bindgen::from_value(keys).map_err(Error::from)?;
|
|
|
+ let keys = keys_store
|
|
|
+ .get(keyset_id)
|
|
|
+ .await
|
|
|
+ .map_err(Error::from)?
|
|
|
+ .and_then(|k| serde_wasm_bindgen::from_value(k).ok());
|
|
|
|
|
|
Ok(keys)
|
|
|
}
|
|
@@ -546,7 +561,7 @@ impl WalletDatabase for WalletRexieDatabase {
|
|
|
let keys_store = transaction.store(MINT_KEYS).map_err(Error::from)?;
|
|
|
|
|
|
let keyset_id = serde_wasm_bindgen::to_value(id).map_err(Error::from)?;
|
|
|
- keys_store.delete(&keyset_id).await.map_err(Error::from)?;
|
|
|
+ keys_store.delete(keyset_id).await.map_err(Error::from)?;
|
|
|
|
|
|
Ok(())
|
|
|
}
|
|
@@ -592,7 +607,7 @@ impl WalletDatabase for WalletRexieDatabase {
|
|
|
let proofs_store = transaction.store(PROOFS).map_err(Error::from)?;
|
|
|
|
|
|
let proofs = proofs_store
|
|
|
- .get_all(None, None, None, None)
|
|
|
+ .scan(None, None, None, None)
|
|
|
.await
|
|
|
.map_err(Error::from)?;
|
|
|
|
|
@@ -634,7 +649,7 @@ impl WalletDatabase for WalletRexieDatabase {
|
|
|
for proof in proofs {
|
|
|
let y = serde_wasm_bindgen::to_value(&proof.y()?).map_err(Error::from)?;
|
|
|
|
|
|
- proofs_store.delete(&y).await.map_err(Error::from)?;
|
|
|
+ proofs_store.delete(y).await.map_err(Error::from)?;
|
|
|
}
|
|
|
|
|
|
transaction.done().await.map_err(Error::from)?;
|
|
@@ -653,8 +668,12 @@ impl WalletDatabase for WalletRexieDatabase {
|
|
|
|
|
|
let y = serde_wasm_bindgen::to_value(&y).map_err(Error::from)?;
|
|
|
|
|
|
- let proof = proofs_store.get(&y).await.map_err(Error::from)?;
|
|
|
- let mut proof: ProofInfo = serde_wasm_bindgen::from_value(proof).map_err(Error::from)?;
|
|
|
+ let mut proof: ProofInfo = proofs_store
|
|
|
+ .get(y.clone())
|
|
|
+ .await
|
|
|
+ .map_err(Error::from)?
|
|
|
+ .and_then(|p| serde_wasm_bindgen::from_value(p).ok())
|
|
|
+ .ok_or(Error::NotFound)?;
|
|
|
|
|
|
proof.state = state;
|
|
|
|
|
@@ -681,9 +700,11 @@ impl WalletDatabase for WalletRexieDatabase {
|
|
|
|
|
|
let keyset_id = serde_wasm_bindgen::to_value(keyset_id).map_err(Error::from)?;
|
|
|
|
|
|
- let current_count = counter_store.get(&keyset_id).await.map_err(Error::from)?;
|
|
|
- let current_count: Option<u32> =
|
|
|
- serde_wasm_bindgen::from_value(current_count).map_err(Error::from)?;
|
|
|
+ let current_count: Option<u32> = counter_store
|
|
|
+ .get(keyset_id.clone())
|
|
|
+ .await
|
|
|
+ .map_err(Error::from)?
|
|
|
+ .and_then(|c| serde_wasm_bindgen::from_value(c).ok());
|
|
|
|
|
|
let new_count = current_count.unwrap_or_default() + count;
|
|
|
|
|
@@ -710,9 +731,11 @@ impl WalletDatabase for WalletRexieDatabase {
|
|
|
|
|
|
let keyset_id = serde_wasm_bindgen::to_value(keyset_id).map_err(Error::from)?;
|
|
|
|
|
|
- let current_count = counter_store.get(&keyset_id).await.map_err(Error::from)?;
|
|
|
- let current_count: Option<u32> =
|
|
|
- serde_wasm_bindgen::from_value(current_count).map_err(Error::from)?;
|
|
|
+ let current_count = counter_store
|
|
|
+ .get(keyset_id)
|
|
|
+ .await
|
|
|
+ .map_err(Error::from)?
|
|
|
+ .and_then(|c| serde_wasm_bindgen::from_value(c).ok());
|
|
|
|
|
|
Ok(current_count)
|
|
|
}
|
|
@@ -759,11 +782,10 @@ impl WalletDatabase for WalletRexieDatabase {
|
|
|
let verifying_key = serde_wasm_bindgen::to_value(verifying_key).map_err(Error::from)?;
|
|
|
|
|
|
let last_checked = nostr_last_check_store
|
|
|
- .get(&verifying_key)
|
|
|
+ .get(verifying_key)
|
|
|
.await
|
|
|
- .map_err(Error::from)?;
|
|
|
- let last_checked: Option<u32> =
|
|
|
- serde_wasm_bindgen::from_value(last_checked).map_err(Error::from)?;
|
|
|
+ .map_err(Error::from)?
|
|
|
+ .and_then(|l| serde_wasm_bindgen::from_value(l).ok());
|
|
|
|
|
|
Ok(last_checked)
|
|
|
}
|