@@ -765,19 +765,25 @@ pub(crate) async fn handle_command(cli_opts: CliOpts) -> Result<String, Error> {
765765 let database_path = prepare_wallet_db_dir ( wallet_name, & home_dir) ?;
766766 #[ cfg( any( feature = "sqlite" , feature = "redb" ) ) ]
767767 let result = {
768+ #[ cfg( feature = "redb" ) ]
769+ let db = bdk_redb:: redb:: Database :: create ( database_path. join ( "wallet.redb" ) )
770+ . map_err ( bdk_redb:: redb:: Error :: from)
771+ . map_err ( bdk_redb:: error:: StoreError :: from)
772+ . map_err ( PersisterError :: from) ?;
768773 let mut persister: Persister = match & wallet_opts. database_type {
769774 #[ cfg( feature = "sqlite" ) ]
770775 DatabaseType :: Sqlite => {
776+ use std:: marker:: PhantomData ;
777+
771778 let db_file = database_path. join ( "wallet.sqlite" ) ;
772779 let connection = Connection :: open ( db_file) . map_err ( PersisterError :: from) ?;
773780 log:: debug!( "Sqlite database opened successfully" ) ;
774- Persister :: Connection ( connection)
781+ Persister :: Connection ( connection, PhantomData )
775782 }
776783 #[ cfg( feature = "redb" ) ]
777784 DatabaseType :: Redb => {
778- let db_file = database_path. join ( "wallet.redb" ) ;
779785 let store = RedbStore :: new (
780- db_file ,
786+ & db ,
781787 wallet_name. clone ( ) . unwrap_or ( "wallet1" . to_string ( ) ) ,
782788 )
783789 . map_err ( PersisterError :: from) ?;
@@ -820,19 +826,25 @@ pub(crate) async fn handle_command(cli_opts: CliOpts) -> Result<String, Error> {
820826 let home_dir = prepare_home_dir ( cli_opts. datadir ) ?;
821827 let wallet_name = & wallet_opts. wallet ;
822828 let database_path = prepare_wallet_db_dir ( wallet_name, & home_dir) ?;
829+ #[ cfg( feature = "redb" ) ]
830+ let db = bdk_redb:: redb:: Database :: create ( database_path. join ( "wallet.redb" ) )
831+ . map_err ( bdk_redb:: redb:: Error :: from)
832+ . map_err ( bdk_redb:: error:: StoreError :: from)
833+ . map_err ( PersisterError :: from) ?;
823834 let mut persister: Persister = match & wallet_opts. database_type {
824835 #[ cfg( feature = "sqlite" ) ]
825836 DatabaseType :: Sqlite => {
837+ use std:: marker:: PhantomData ;
838+
826839 let db_file = database_path. join ( "wallet.sqlite" ) ;
827840 let connection = Connection :: open ( db_file) . map_err ( PersisterError :: from) ?;
828841 log:: debug!( "Sqlite database opened successfully" ) ;
829- Persister :: Connection ( connection)
842+ Persister :: Connection ( connection, PhantomData )
830843 }
831844 #[ cfg( feature = "redb" ) ]
832845 DatabaseType :: Redb => {
833- let db_file = database_path. join ( "wallet.redb" ) ;
834846 let store = bdk_redb:: Store :: new (
835- db_file ,
847+ & db ,
836848 wallet_name. clone ( ) . unwrap_or ( "wallet1" . to_string ( ) ) ,
837849 )
838850 . map_err ( PersisterError :: from) ?;
@@ -874,27 +886,37 @@ pub(crate) async fn handle_command(cli_opts: CliOpts) -> Result<String, Error> {
874886 #[ cfg( feature = "repl" ) ]
875887 CliSubCommand :: Repl { wallet_opts } => {
876888 let network = cli_opts. network ;
889+ #[ cfg( feature = "redb" ) ]
890+ let db = bdk_redb:: redb:: Database :: create (
891+ prepare_wallet_db_dir (
892+ & wallet_opts. wallet ,
893+ & prepare_home_dir ( cli_opts. datadir . clone ( ) ) ?,
894+ ) ?
895+ . join ( "wallet.redb" ) ,
896+ )
897+ . map_err ( bdk_redb:: redb:: Error :: from)
898+ . map_err ( bdk_redb:: error:: StoreError :: from)
899+ . map_err ( PersisterError :: from) ?;
877900 #[ cfg( any( feature = "sqlite" , feature = "redb" ) ) ]
878901 let ( mut wallet, mut persister) = {
879902 let wallet_name = & wallet_opts. wallet ;
880-
881- let home_dir = prepare_home_dir ( cli_opts. datadir . clone ( ) ) ?;
882-
883- let database_path = prepare_wallet_db_dir ( wallet_name, & home_dir) ?;
884-
885903 let mut persister: Persister = match & wallet_opts. database_type {
886904 #[ cfg( feature = "sqlite" ) ]
887905 DatabaseType :: Sqlite => {
906+ use std:: marker:: PhantomData ;
907+
908+ let home_dir = prepare_home_dir ( cli_opts. datadir . clone ( ) ) ?;
909+
910+ let database_path = prepare_wallet_db_dir ( wallet_name, & home_dir) ?;
888911 let db_file = database_path. join ( "wallet.sqlite" ) ;
889912 let connection = Connection :: open ( db_file) . map_err ( PersisterError :: from) ?;
890913 log:: debug!( "Sqlite database opened successfully" ) ;
891- Persister :: Connection ( connection)
914+ Persister :: Connection ( connection, PhantomData )
892915 }
893916 #[ cfg( feature = "redb" ) ]
894917 DatabaseType :: Redb => {
895- let db_file = database_path. join ( "wallet.redb" ) ;
896918 let store = bdk_redb:: Store :: new (
897- db_file ,
919+ & db ,
898920 wallet_name. clone ( ) . unwrap_or ( "wallet1" . to_string ( ) ) ,
899921 )
900922 . map_err ( PersisterError :: from) ?;
0 commit comments