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" name = "bdkffi"
[dependencies] [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_macros = { version = "0.16.0", features = ["builtin-bindgen"] }
uniffi = { version = "0.16.0", features = ["builtin-bindgen"] } uniffi = { version = "0.16.0", features = ["builtin-bindgen"] }
thiserror = "1.0" thiserror = "1.0"

View File

@ -46,6 +46,7 @@ enum BdkError {
"Electrum", "Electrum",
"Esplora", "Esplora",
"Sled", "Sled",
"Rusqlite",
}; };
enum Network { enum Network {
@ -60,10 +61,15 @@ dictionary SledDbConfiguration {
string tree_name; string tree_name;
}; };
dictionary SqliteDbConfiguration {
string path;
};
[Enum] [Enum]
interface DatabaseConfig { interface DatabaseConfig {
Memory(string junk); Memory(string junk);
Sled(SledDbConfiguration config); Sled(SledDbConfiguration config);
Sqlite(SqliteDbConfiguration config);
}; };
dictionary TransactionDetails { dictionary TransactionDetails {

View File

@ -6,7 +6,7 @@ use bdk::blockchain::Progress;
use bdk::blockchain::{ use bdk::blockchain::{
electrum::ElectrumBlockchainConfig, esplora::EsploraBlockchainConfig, ConfigurableBlockchain, 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::database::{AnyDatabaseConfig, ConfigurableDatabase};
use bdk::keys::bip39::{Language, Mnemonic, WordCount}; use bdk::keys::bip39::{Language, Mnemonic, WordCount};
use bdk::keys::{DerivableKey, ExtendedKey, GeneratableKey, GeneratedKey}; use bdk::keys::{DerivableKey, ExtendedKey, GeneratableKey, GeneratedKey};
@ -24,6 +24,7 @@ type BdkError = Error;
pub enum DatabaseConfig { pub enum DatabaseConfig {
Memory { junk: String }, Memory { junk: String },
Sled { config: SledDbConfiguration }, Sled { config: SledDbConfiguration },
Sqlite { config: SqliteDbConfiguration },
} }
pub struct ElectrumConfig { pub struct ElectrumConfig {
@ -217,6 +218,7 @@ impl Wallet {
let any_database_config = match database_config { let any_database_config = match database_config {
DatabaseConfig::Memory { .. } => AnyDatabaseConfig::Memory(()), DatabaseConfig::Memory { .. } => AnyDatabaseConfig::Memory(()),
DatabaseConfig::Sled { config } => AnyDatabaseConfig::Sled(config), DatabaseConfig::Sled { config } => AnyDatabaseConfig::Sled(config),
DatabaseConfig::Sqlite { config } => AnyDatabaseConfig::Sqlite(config),
}; };
let any_blockchain_config = match blockchain_config { let any_blockchain_config = match blockchain_config {
BlockchainConfig::Electrum { config } => { BlockchainConfig::Electrum { config } => {