diff --git a/CHANGELOG.md b/CHANGELOG.md index db401649..48440aea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added `RpcBlockchain` in the `AnyBlockchain` struct to allow using Rpc backend where `AnyBlockchain` is used (eg `bdk-cli`) - Removed hard dependency on `tokio`. +- Added `flush` method to the `Database` trait to explicitly flush to disk latest changes on the db. ### Wallet diff --git a/src/database/any.rs b/src/database/any.rs index cc5fcc1c..dbdd2d09 100644 --- a/src/database/any.rs +++ b/src/database/any.rs @@ -233,6 +233,10 @@ 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 9978497d..2da92f22 100644 --- a/src/database/keyvalue.rs +++ b/src/database/keyvalue.rs @@ -367,6 +367,10 @@ 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 df56ef63..c42518db 100644 --- a/src/database/memory.rs +++ b/src/database/memory.rs @@ -419,6 +419,10 @@ 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 217153fd..6dbecc66 100644 --- a/src/database/mod.rs +++ b/src/database/mod.rs @@ -134,6 +134,9 @@ 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; + + /// Force changes to be written to disk + fn flush(&mut self) -> Result<(), Error>; } /// Trait for a database that supports batch operations