Przeglądaj źródła

chore: update rexie nostr

thesimplekid 7 miesięcy temu
rodzic
commit
5b4aafeb9d

+ 1 - 1
crates/cdk-cli/Cargo.toml

@@ -25,7 +25,7 @@ tracing.workspace = true
 tracing-subscriber.workspace = true
 rand.workspace = true
 home.workspace = true
-nostr-sdk = { version = "0.32.0", default-features = false, features = [
+nostr-sdk = { version = "0.33.0", default-features = false, features = [
     "nip04",
     "nip44"
 ]}

+ 1 - 1
crates/cdk-rexie/Cargo.toml

@@ -15,7 +15,7 @@ default = ["wallet"]
 wallet = ["cdk/wallet"]
 
 [dependencies]
-rexie = "0.5.0"
+rexie = "0.6.0"
 cdk = { workspace = true, default-features = false }
 async-trait.workspace = true
 tokio.workspace = true

+ 72 - 50
crates/cdk-rexie/src/wallet.rs

@@ -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(&quote_id).map_err(Error::from)?;
-        let quote = quotes_store.get(&quote_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(&quote_id).map_err(Error::from)?;
 
-        quotes_store.delete(&quote_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(&quote_id).map_err(Error::from)?;
-        let keysets = quotes_store.get(&quote_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(&quote_id).map_err(Error::from)?;
 
-        quotes_store.delete(&quote_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)
     }