Use T: AsRef<Path> as param to SqliteDatabase::new

Currently SqliteDatabase::new takes a String as path,
with this change, it now accepts any type that implements
AsRef<Path>.
This commit is contained in:
Vladimir Fomene 2022-07-20 17:31:17 +01:00
parent 6bae52e6f2
commit 558e37afa7
No known key found for this signature in database
GPG Key ID: 8BBAE8CC0B1530A0
2 changed files with 10 additions and 4 deletions

View File

@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Add `descriptor::checksum::get_checksum_bytes` method. - Add `descriptor::checksum::get_checksum_bytes` method.
- Add `Excess` enum to handle remaining amount after coin selection. - Add `Excess` enum to handle remaining amount after coin selection.
- Move change creation from `Wallet::create_tx` to `CoinSelectionAlgorithm::coin_select`. - Move change creation from `Wallet::create_tx` to `CoinSelectionAlgorithm::coin_select`.
- Change the interface of `SqliteDatabase::new` to accept any type that implement AsRef<Path>
## [v0.20.0] - [v0.19.0] ## [v0.20.0] - [v0.19.0]

View File

@ -8,6 +8,8 @@
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option. // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
// You may not use this file except in accordance with one or both of these // You may not use this file except in accordance with one or both of these
// licenses. // licenses.
use std::path::Path;
use std::path::PathBuf;
use bitcoin::consensus::encode::{deserialize, serialize}; use bitcoin::consensus::encode::{deserialize, serialize};
use bitcoin::hash_types::Txid; use bitcoin::hash_types::Txid;
@ -60,7 +62,7 @@ static MIGRATIONS: &[&str] = &[
#[derive(Debug)] #[derive(Debug)]
pub struct SqliteDatabase { pub struct SqliteDatabase {
/// Path on the local filesystem to store the sqlite file /// Path on the local filesystem to store the sqlite file
pub path: String, pub path: PathBuf,
/// A rusqlite connection object to the sqlite database /// A rusqlite connection object to the sqlite database
pub connection: Connection, pub connection: Connection,
} }
@ -68,9 +70,12 @@ pub struct SqliteDatabase {
impl SqliteDatabase { impl SqliteDatabase {
/// Instantiate a new SqliteDatabase instance by creating a connection /// Instantiate a new SqliteDatabase instance by creating a connection
/// to the database stored at path /// to the database stored at path
pub fn new(path: String) -> Self { pub fn new<T: AsRef<Path>>(path: T) -> Self {
let connection = get_connection(&path).unwrap(); let connection = get_connection(&path).unwrap();
SqliteDatabase { path, connection } SqliteDatabase {
path: PathBuf::from(path.as_ref()),
connection,
}
} }
fn insert_script_pubkey( fn insert_script_pubkey(
&self, &self,
@ -908,7 +913,7 @@ impl BatchDatabase for SqliteDatabase {
} }
} }
pub fn get_connection(path: &str) -> Result<Connection, Error> { pub fn get_connection<T: AsRef<Path>>(path: &T) -> Result<Connection, Error> {
let connection = Connection::open(path)?; let connection = Connection::open(path)?;
migrate(&connection)?; migrate(&connection)?;
Ok(connection) Ok(connection)