Add sqlite database option

This commit is contained in:
Steve Myers 2022-03-11 22:45:37 -06:00
parent 58e75d1a1d
commit 12f4784b85
No known key found for this signature in database
GPG Key ID: 8105A46B22C2D051
3 changed files with 14 additions and 2 deletions

View File

@ -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"

View File

@ -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 {

View File

@ -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 } => {