Просмотр исходного кода

wallet: Add functionality to revert spent coin in wallet.

parazyd 4 лет назад
Родитель
Сommit
757eefc181
2 измененных файлов с 19 добавлено и 0 удалено
  1. 4 0
      src/node/client.rs
  2. 15 0
      src/wallet/walletdb.rs

+ 4 - 0
src/node/client.rs

@@ -190,6 +190,10 @@ impl Client {
         self.wallet.confirm_spend_coin(coin).await
     }
 
+    pub async fn revert_spend_coin(&self, coin: &Coin) -> Result<()> {
+        self.wallet.revert_spend_coin(coin).await
+    }
+
     pub async fn get_keypairs(&self) -> Result<Vec<Keypair>> {
         self.wallet.get_keypairs().await
     }

+ 15 - 0
src/wallet/walletdb.rs

@@ -345,6 +345,21 @@ impl WalletDb {
         Ok(())
     }
 
+    pub async fn revert_spend_coin(&self, coin: &Coin) -> Result<()> {
+        debug!("Revert spend coin");
+        let is_spent = 0;
+        let coin = serialize(coin);
+
+        let mut conn = self.conn.acquire().await?;
+        sqlx::query("UPDATE coins SET is_spent = ?1 WHERE coin = ?2;")
+            .bind(is_spent)
+            .bind(coin)
+            .execute(&mut conn)
+            .await?;
+
+        Ok(())
+    }
+
     pub async fn get_balances(&self) -> Result<Balances> {
         debug!("Getting tokens and balances");
         let is_spent = 0;