[database] Add AnyDatabase and ConfigurableDatabase

This is related to #43
This commit is contained in:
Alekos Filini
2020-09-15 11:25:59 +02:00
parent 5b0fd3bba0
commit 57ea653f1c
3 changed files with 411 additions and 1 deletions

View File

@@ -43,6 +43,9 @@ use bitcoin::{OutPoint, Script, Transaction, TxOut};
use crate::error::Error;
use crate::types::*;
pub mod any;
pub use any::{AnyDatabase, AnyDatabaseConfig};
#[cfg(feature = "key-value-db")]
pub(crate) mod keyvalue;
@@ -159,6 +162,15 @@ pub trait BatchDatabase: Database {
fn commit_batch(&mut self, batch: Self::Batch) -> Result<(), Error>;
}
/// Trait for [`Database`] types that can be created given a configuration
pub trait ConfigurableDatabase: Database + Sized {
/// Type that contains the configuration
type Config: std::fmt::Debug;
/// Create a new instance given a configuration
fn from_config(config: &Self::Config) -> Result<Self, Error>;
}
pub(crate) trait DatabaseUtils: Database {
fn is_mine(&self, script: &Script) -> Result<bool, Error> {
self.get_path_from_script_pubkey(script)