From 12f4784b85fa2a263d9648dcccd8bac2da44644d Mon Sep 17 00:00:00 2001 From: Steve Myers Date: Fri, 11 Mar 2022 22:45:37 -0600 Subject: [PATCH] Add sqlite database option --- Cargo.toml | 6 +++++- src/bdk.udl | 6 ++++++ src/lib.rs | 4 +++- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 184ef81..aeb4e1a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,7 +10,11 @@ crate-type = ["staticlib", "cdylib"] name = "bdkffi" [dependencies] -bdk = { version = "0.14", features = ["all-keys", "use-esplora-ureq"] } +bdk = { version = "0.14", features = ["all-keys", "use-esplora-ureq", "sqlite"] } + +# TODO remove when bdk "sqlite-bundled" feature added +rusqlite = { version = "0.25.3", features = ["bundled"] } + uniffi_macros = { version = "0.16.0", features = ["builtin-bindgen"] } uniffi = { version = "0.16.0", features = ["builtin-bindgen"] } thiserror = "1.0" diff --git a/src/bdk.udl b/src/bdk.udl index 80fd4cc..6d4412f 100644 --- a/src/bdk.udl +++ b/src/bdk.udl @@ -46,6 +46,7 @@ enum BdkError { "Electrum", "Esplora", "Sled", + "Rusqlite", }; enum Network { @@ -60,10 +61,15 @@ dictionary SledDbConfiguration { string tree_name; }; +dictionary SqliteDbConfiguration { + string path; +}; + [Enum] interface DatabaseConfig { Memory(string junk); Sled(SledDbConfiguration config); + Sqlite(SqliteDbConfiguration config); }; dictionary TransactionDetails { diff --git a/src/lib.rs b/src/lib.rs index e5cd1b2..22faa3a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -6,7 +6,7 @@ use bdk::blockchain::Progress; use bdk::blockchain::{ electrum::ElectrumBlockchainConfig, esplora::EsploraBlockchainConfig, ConfigurableBlockchain, }; -use bdk::database::any::{AnyDatabase, SledDbConfiguration}; +use bdk::database::any::{AnyDatabase, SledDbConfiguration, SqliteDbConfiguration}; use bdk::database::{AnyDatabaseConfig, ConfigurableDatabase}; use bdk::keys::bip39::{Language, Mnemonic, WordCount}; use bdk::keys::{DerivableKey, ExtendedKey, GeneratableKey, GeneratedKey}; @@ -24,6 +24,7 @@ type BdkError = Error; pub enum DatabaseConfig { Memory { junk: String }, Sled { config: SledDbConfiguration }, + Sqlite { config: SqliteDbConfiguration }, } pub struct ElectrumConfig { @@ -217,6 +218,7 @@ impl Wallet { let any_database_config = match database_config { DatabaseConfig::Memory { .. } => AnyDatabaseConfig::Memory(()), DatabaseConfig::Sled { config } => AnyDatabaseConfig::Sled(config), + DatabaseConfig::Sqlite { config } => AnyDatabaseConfig::Sqlite(config), }; let any_blockchain_config = match blockchain_config { BlockchainConfig::Electrum { config } => {