From 889a0d3eca312d4795049c9b5b7f9d07ae6400a3 Mon Sep 17 00:00:00 2001 From: ghassmo Date: Mon, 20 Sep 2021 18:05:22 +0300 Subject: [PATCH] return asset_id when request token public key from cashierdb --- src/wallet/cashierdb.rs | 22 ++++++++++++---------- src/wallet/wallet_api.rs | 1 + 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/wallet/cashierdb.rs b/src/wallet/cashierdb.rs index f1386555b..caf5cc17e 100644 --- a/src/wallet/cashierdb.rs +++ b/src/wallet/cashierdb.rs @@ -204,8 +204,7 @@ impl CashierDb { pub fn get_withdraw_coin_public_key_by_dkey_public( &self, pub_key: &jubjub::SubgroupPoint, - asset_id: &Vec, - ) -> Result>> { + ) -> Result, jubjub::Fr)>> { debug!(target: "CASHIERDB", "Get coin address by pub_key"); // open connection let conn = Connection::open(&self.path)?; @@ -217,15 +216,18 @@ impl CashierDb { let confirm = self.get_value_serialized(&false)?; let mut stmt = conn.prepare( - "SELECT coin_key_id FROM withdraw_keypairs WHERE d_key_public = :d_key_public AND asset_id = :asset_id AND confirm = :confirm;", + "SELECT coin_key_id, asset_id FROM withdraw_keypairs WHERE d_key_public = :d_key_public AND confirm = :confirm;", )?; - let addr_iter = stmt.query_map::, _, _>( - &[ - (":d_key_public", &d_key_public), - (":asset_id", &asset_id), - (":confirm", &&confirm), - ], - |row| Ok(row.get(0)?), + let addr_iter = stmt.query_map::<(Vec, jubjub::Fr), _, _>( + &[(":d_key_public", &d_key_public), (":confirm", &&confirm)], + |row| { + let coin_public_key = row.get(0)?; + let asset_id = row.get(1)?; + let asset_id: jubjub::Fr = self + .get_value_deserialized(asset_id) + .expect("deserialize asset_id"); + Ok((coin_public_key, asset_id)) + }, )?; let mut coin_addresses = vec![]; diff --git a/src/wallet/wallet_api.rs b/src/wallet/wallet_api.rs index e1dd4b1eb..41b7f0bb2 100644 --- a/src/wallet/wallet_api.rs +++ b/src/wallet/wallet_api.rs @@ -14,6 +14,7 @@ pub trait WalletApi { Ok(v) } + // TODO pass a reference of Vec fn get_value_deserialized(&self, key: Vec) -> Result { let v: D = deserialize(&key)?; Ok(v)