From e68d3b9e63914c1008e1a4bb20a847428659d52e Mon Sep 17 00:00:00 2001 From: KaFai Choi Date: Wed, 23 Mar 2022 10:58:05 +0700 Subject: [PATCH 1/2] remove Database::flush --- CHANGELOG.md | 1 + src/database/any.rs | 4 ---- src/database/keyvalue.rs | 4 ---- src/database/memory.rs | 4 ---- src/database/mod.rs | 7 ------- src/database/sqlite.rs | 4 ---- 6 files changed, 1 insertion(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7eaf9bff..97fac266 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -52,6 +52,7 @@ To decouple the `Wallet` from the `Blockchain` we've made major changes: - Stop making a request for the block height when calling `Wallet:new`. - Added `SyncOptions` to capture extra (future) arguments to `Wallet::sync`. - Removed `max_addresses` sync parameter which determined how many addresses to cache before syncing since this can just be done with `ensure_addresses_cached`. +- remove `flush` method from the `Database` trait. ## [v0.16.1] - [v0.16.0] diff --git a/src/database/any.rs b/src/database/any.rs index b370ded9..bbd9d41a 100644 --- a/src/database/any.rs +++ b/src/database/any.rs @@ -255,10 +255,6 @@ impl Database for AnyDatabase { fn increment_last_index(&mut self, keychain: KeychainKind) -> Result { impl_inner_method!(AnyDatabase, self, increment_last_index, keychain) } - - fn flush(&mut self) -> Result<(), Error> { - impl_inner_method!(AnyDatabase, self, flush) - } } impl BatchOperations for AnyBatch { diff --git a/src/database/keyvalue.rs b/src/database/keyvalue.rs index 5baa6c86..c298be36 100644 --- a/src/database/keyvalue.rs +++ b/src/database/keyvalue.rs @@ -402,10 +402,6 @@ impl Database for Tree { Ok(val) }) } - - fn flush(&mut self) -> Result<(), Error> { - Ok(Tree::flush(self).map(|_| ())?) - } } impl BatchDatabase for Tree { diff --git a/src/database/memory.rs b/src/database/memory.rs index 1c8d1cca..4256d217 100644 --- a/src/database/memory.rs +++ b/src/database/memory.rs @@ -449,10 +449,6 @@ impl Database for MemoryDatabase { Ok(*value) } - - fn flush(&mut self) -> Result<(), Error> { - Ok(()) - } } impl BatchDatabase for MemoryDatabase { diff --git a/src/database/mod.rs b/src/database/mod.rs index 80e5a2a5..c7ff1795 100644 --- a/src/database/mod.rs +++ b/src/database/mod.rs @@ -158,13 +158,6 @@ pub trait Database: BatchOperations { /// /// It should insert and return `0` if not present in the database fn increment_last_index(&mut self, keychain: KeychainKind) -> Result; - - #[deprecated( - since = "0.18.0", - note = "The flush function is only needed for the sled database on mobile, instead for mobile use the sqlite database." - )] - /// Force changes to be written to disk - fn flush(&mut self) -> Result<(), Error>; } /// Trait for a database that supports batch operations diff --git a/src/database/sqlite.rs b/src/database/sqlite.rs index fbdf1ad6..06ed7e43 100644 --- a/src/database/sqlite.rs +++ b/src/database/sqlite.rs @@ -891,10 +891,6 @@ impl Database for SqliteDatabase { } } } - - fn flush(&mut self) -> Result<(), Error> { - Ok(()) - } } impl BatchDatabase for SqliteDatabase { From 5ff8320e3b1cb4e3971549a3e3c168f20762d04b Mon Sep 17 00:00:00 2001 From: KaFai Choi Date: Wed, 23 Mar 2022 13:46:16 +0700 Subject: [PATCH 2/2] add private function ivcec_to_u32 in keyvalue --- src/database/keyvalue.rs | 42 ++++++++++++++-------------------------- 1 file changed, 14 insertions(+), 28 deletions(-) diff --git a/src/database/keyvalue.rs b/src/database/keyvalue.rs index c298be36..e10ada1f 100644 --- a/src/database/keyvalue.rs +++ b/src/database/keyvalue.rs @@ -166,16 +166,9 @@ macro_rules! impl_batch_operations { fn del_last_index(&mut self, keychain: KeychainKind) -> Result, Error> { let key = MapKey::LastIndex(keychain).as_map_key(); let res = self.remove(key); - let res = $process_delete!(res); - - match res { - None => Ok(None), - Some(b) => { - let array: [u8; 4] = b.as_ref().try_into().map_err(|_| Error::InvalidU32Bytes(b.to_vec()))?; - let val = u32::from_be_bytes(array); - Ok(Some(val)) - } - } + $process_delete!(res) + .map(ivec_to_u32) + .transpose() } fn del_sync_time(&mut self) -> Result, Error> { @@ -357,16 +350,7 @@ impl Database for Tree { fn get_last_index(&self, keychain: KeychainKind) -> Result, Error> { let key = MapKey::LastIndex(keychain).as_map_key(); - self.get(key)? - .map(|b| -> Result<_, Error> { - let array: [u8; 4] = b - .as_ref() - .try_into() - .map_err(|_| Error::InvalidU32Bytes(b.to_vec()))?; - let val = u32::from_be_bytes(array); - Ok(val) - }) - .transpose() + self.get(key)?.map(ivec_to_u32).transpose() } fn get_sync_time(&self) -> Result, Error> { @@ -393,17 +377,19 @@ impl Database for Tree { Some(new.to_be_bytes().to_vec()) })? - .map_or(Ok(0), |b| -> Result<_, Error> { - let array: [u8; 4] = b - .as_ref() - .try_into() - .map_err(|_| Error::InvalidU32Bytes(b.to_vec()))?; - let val = u32::from_be_bytes(array); - Ok(val) - }) + .map_or(Ok(0), ivec_to_u32) } } +fn ivec_to_u32(b: sled::IVec) -> Result { + let array: [u8; 4] = b + .as_ref() + .try_into() + .map_err(|_| Error::InvalidU32Bytes(b.to_vec()))?; + let val = u32::from_be_bytes(array); + Ok(val) +} + impl BatchDatabase for Tree { type Batch = sled::Batch;