@@ -8,7 +8,7 @@ use std::{
88
99use crate :: {
1010 error:: BDKCliError as Error ,
11- persister:: new_wallet,
11+ persister:: { self , new_wallet} ,
1212 utils:: { load_wallet_config, prepare_wallet_db_dir} ,
1313} ;
1414#[ cfg( any( feature = "sqlite" , feature = "redb" ) ) ]
@@ -28,7 +28,7 @@ use crate::client::{BlockchainClient, new_blockchain_client};
2828pub enum RuntimeWallet {
2929 Standard ( Wallet ) ,
3030 #[ cfg( any( feature = "sqlite" , feature = "redb" ) ) ]
31- Persisted ( PersistedWallet < Persister > ) ,
31+ Persisted ( PersistedWallet < Persister > , Persister ) ,
3232}
3333
3434impl Deref for RuntimeWallet {
@@ -37,7 +37,7 @@ impl Deref for RuntimeWallet {
3737 match self {
3838 Self :: Standard ( wallet) => wallet,
3939 #[ cfg( any( feature = "sqlite" , feature = "redb" ) ) ]
40- Self :: Persisted ( wallet) => wallet,
40+ Self :: Persisted ( wallet, _ ) => wallet,
4141 }
4242 }
4343}
@@ -47,7 +47,20 @@ impl DerefMut for RuntimeWallet {
4747 match self {
4848 Self :: Standard ( wallet) => wallet,
4949 #[ cfg( any( feature = "sqlite" , feature = "redb" ) ) ]
50- Self :: Persisted ( wallet) => wallet,
50+ Self :: Persisted ( wallet, _) => wallet,
51+ }
52+ }
53+ }
54+
55+ impl RuntimeWallet {
56+ pub fn persist ( & mut self ) -> Result < ( ) , Error > {
57+ match self {
58+ Self :: Standard ( _) => Ok ( ( ) ) ,
59+ #[ cfg( any( feature = "sqlite" , feature = "redb" ) ) ]
60+ Self :: Persisted ( wallet, persister) => {
61+ wallet. persist ( persister) ?;
62+ Ok ( ( ) )
63+ }
5164 }
5265 }
5366}
@@ -88,7 +101,7 @@ impl WalletRuntime {
88101 {
89102 let mut persister = self . create_persister ( ) ?;
90103 let wallet = new_persisted_wallet ( self . network , & mut persister, & self . wallet_opts ) ?;
91- Ok ( RuntimeWallet :: Persisted ( wallet) )
104+ Ok ( RuntimeWallet :: Persisted ( wallet, persister ) )
92105 }
93106
94107 #[ cfg( not( any( feature = "sqlite" , feature = "redb" ) ) ) ]
0 commit comments