From cf9d13bd0974e2eb73a956915e30edf86660feaa Mon Sep 17 00:00:00 2001 From: Vihiga Tyonum Date: Thu, 21 May 2026 15:59:56 +0100 Subject: [PATCH] ref(persister): collapse wallet subdir to persister - move wallet subdir into the persister module to simplify the structure as wallet was confusing --- src/{wallet/mod.rs => persister.rs} | 53 ++++++++++++++++++++++++++--- src/wallet/persister.rs | 40 ---------------------- 2 files changed, 49 insertions(+), 44 deletions(-) rename src/{wallet/mod.rs => persister.rs} (59%) delete mode 100644 src/wallet/persister.rs diff --git a/src/wallet/mod.rs b/src/persister.rs similarity index 59% rename from src/wallet/mod.rs rename to src/persister.rs index 7ef2e65..2a17db1 100644 --- a/src/wallet/mod.rs +++ b/src/persister.rs @@ -1,12 +1,57 @@ +#[cfg(any(feature = "sqlite", feature = "redb"))] use crate::commands::WalletOpts; use crate::error::BDKCliError as Error; -use bdk_wallet::Wallet; -use bdk_wallet::bitcoin::Network; #[cfg(any(feature = "sqlite", feature = "redb"))] -use bdk_wallet::{KeychainKind, PersistedWallet, WalletPersister}; +use bdk_wallet::{KeychainKind, PersistedWallet, bitcoin::Network}; +use bdk_wallet::{Wallet, WalletPersister}; +use clap::ValueEnum; + +#[derive(Clone, ValueEnum, Debug, Eq, PartialEq)] +pub enum DatabaseType { + /// Sqlite database + #[cfg(feature = "sqlite")] + Sqlite, + /// Redb database + #[cfg(feature = "redb")] + Redb, +} +// Types of Persistence backends supported by bdk-cli #[cfg(any(feature = "sqlite", feature = "redb"))] -pub mod persister; +pub(crate) enum Persister { + #[cfg(feature = "sqlite")] + Connection(bdk_wallet::rusqlite::Connection), + #[cfg(feature = "redb")] + RedbStore(bdk_redb::Store), +} + +impl WalletPersister for Persister { + type Error = Error; + + fn initialize(persister: &mut Self) -> Result { + match persister { + #[cfg(feature = "sqlite")] + Persister::Connection(connection) => { + WalletPersister::initialize(connection).map_err(Error::from) + } + #[cfg(feature = "redb")] + Persister::RedbStore(store) => WalletPersister::initialize(store).map_err(Error::from), + } + } + + fn persist(persister: &mut Self, changeset: &bdk_wallet::ChangeSet) -> Result<(), Self::Error> { + match persister { + #[cfg(feature = "sqlite")] + Persister::Connection(connection) => { + WalletPersister::persist(connection, changeset).map_err(Error::from) + } + #[cfg(feature = "redb")] + Persister::RedbStore(store) => { + WalletPersister::persist(store, changeset).map_err(Error::from) + } + } + } +} #[cfg(any(feature = "sqlite", feature = "redb"))] pub(crate) fn new_persisted_wallet( diff --git a/src/wallet/persister.rs b/src/wallet/persister.rs deleted file mode 100644 index 1f9a742..0000000 --- a/src/wallet/persister.rs +++ /dev/null @@ -1,40 +0,0 @@ -use crate::error::BDKCliError; -use bdk_wallet::WalletPersister; - -// Types of Persistence backends supported by bdk-cli -pub(crate) enum Persister { - #[cfg(feature = "sqlite")] - Connection(bdk_wallet::rusqlite::Connection), - #[cfg(feature = "redb")] - RedbStore(bdk_redb::Store), -} - -impl WalletPersister for Persister { - type Error = BDKCliError; - - fn initialize(persister: &mut Self) -> Result { - match persister { - #[cfg(feature = "sqlite")] - Persister::Connection(connection) => { - WalletPersister::initialize(connection).map_err(BDKCliError::from) - } - #[cfg(feature = "redb")] - Persister::RedbStore(store) => { - WalletPersister::initialize(store).map_err(BDKCliError::from) - } - } - } - - fn persist(persister: &mut Self, changeset: &bdk_wallet::ChangeSet) -> Result<(), Self::Error> { - match persister { - #[cfg(feature = "sqlite")] - Persister::Connection(connection) => { - WalletPersister::persist(connection, changeset).map_err(BDKCliError::from) - } - #[cfg(feature = "redb")] - Persister::RedbStore(store) => { - WalletPersister::persist(store, changeset).map_err(BDKCliError::from) - } - } - } -} -- 2.49.0