Skip to content

Commit

Permalink
database: Pass config as a reference to new().
Browse files Browse the repository at this point in the history
  • Loading branch information
ceyhunsen committed Oct 2, 2024
1 parent 20e973b commit 7390a0a
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 37 deletions.
34 changes: 17 additions & 17 deletions core/src/database/common.rs
Original file line number Diff line number Diff line change
Expand Up @@ -602,7 +602,7 @@ mod tests {
#[tokio::test]
async fn test_database_gets_previously_saved_operator_take_signature() {
let config = create_test_config_with_thread_name("test_config.toml", None).await;
let database = Database::new(config).await.unwrap();
let database = Database::new(&config).await.unwrap();

let deposit_outpoint = OutPoint::null();
let outpoint = OutPoint {
Expand Down Expand Up @@ -640,7 +640,7 @@ mod tests {
#[tokio::test]
async fn test_save_and_get_deposit_info() {
let config = create_test_config_with_thread_name("test_config.toml", None).await;
let database = Database::new(config.clone()).await.unwrap();
let database = Database::new(&config).await.unwrap();

let secp = Secp256k1::new();
let xonly_public_key = XOnlyPublicKey::from_slice(&[
Expand Down Expand Up @@ -673,7 +673,7 @@ mod tests {
#[tokio::test]
async fn test_nonces_1() {
let config = create_test_config_with_thread_name("test_config.toml", None).await;
let db = Database::new(config).await.unwrap();
let db = Database::new(&config).await.unwrap();
let secp = Secp256k1::new();

let outpoint = OutPoint {
Expand Down Expand Up @@ -718,7 +718,7 @@ mod tests {
#[tokio::test]
async fn test_nonces_2() {
let config = create_test_config_with_thread_name("test_config.toml", None).await;
let db = Database::new(config).await.unwrap();
let db = Database::new(&config).await.unwrap();
let secp = Secp256k1::new();

let outpoint = OutPoint::null();
Expand Down Expand Up @@ -762,7 +762,7 @@ mod tests {
#[tokio::test]
async fn test_nonces_3() {
let config = create_test_config_with_thread_name("test_config.toml", None).await;
let db = Database::new(config).await.unwrap();
let db = Database::new(&config).await.unwrap();
let secp = Secp256k1::new();

let outpoint = OutPoint {
Expand Down Expand Up @@ -810,7 +810,7 @@ mod tests {
#[tokio::test]
async fn test_get_pub_nonces_1() {
let config = create_test_config_with_thread_name("test_config.toml", None).await;
let db = Database::new(config).await.unwrap();
let db = Database::new(&config).await.unwrap();
let secp = Secp256k1::new();

let outpoint = OutPoint {
Expand Down Expand Up @@ -843,7 +843,7 @@ mod tests {
#[tokio::test]
async fn test_get_pub_nonces_2() {
let config = create_test_config_with_thread_name("test_config.toml", None).await;
let db = Database::new(config).await.unwrap();
let db = Database::new(&config).await.unwrap();
let outpoint = OutPoint {
txid: Txid::from_byte_array([1u8; 32]),
vout: 1,
Expand All @@ -855,7 +855,7 @@ mod tests {
#[tokio::test]
async fn test_operators_kickoff_utxo_1() {
let config = create_test_config_with_thread_name("test_config.toml", None).await;
let db = Database::new(config).await.unwrap();
let db = Database::new(&config).await.unwrap();

let outpoint = OutPoint {
txid: Txid::from_byte_array([1u8; 32]),
Expand All @@ -880,7 +880,7 @@ mod tests {
#[tokio::test]
async fn test_operators_kickoff_utxo_2() {
let config = create_test_config_with_thread_name("test_config.toml", None).await;
let db = Database::new(config).await.unwrap();
let db = Database::new(&config).await.unwrap();

let outpoint = OutPoint {
txid: Txid::from_byte_array([1u8; 32]),
Expand All @@ -893,7 +893,7 @@ mod tests {
#[tokio::test]
async fn test_verifiers_kickoff_utxos_1() {
let config = create_test_config_with_thread_name("test_config.toml", None).await;
let db = Database::new(config).await.unwrap();
let db = Database::new(&config).await.unwrap();

let outpoint = OutPoint {
txid: Txid::from_byte_array([1u8; 32]),
Expand Down Expand Up @@ -930,7 +930,7 @@ mod tests {
#[tokio::test]
async fn test_verifiers_kickoff_utxos_2() {
let config = create_test_config_with_thread_name("test_config.toml", None).await;
let db = Database::new(config).await.unwrap();
let db = Database::new(&config).await.unwrap();

let outpoint = OutPoint {
txid: Txid::from_byte_array([1u8; 32]),
Expand All @@ -943,7 +943,7 @@ mod tests {
#[tokio::test]
async fn test_operators_funding_utxo_1() {
let config = create_test_config_with_thread_name("test_config.toml", None).await;
let db = Database::new(config).await.unwrap();
let db = Database::new(&config).await.unwrap();

let utxo = UTXO {
outpoint: OutPoint {
Expand All @@ -965,7 +965,7 @@ mod tests {
#[tokio::test]
async fn test_operators_funding_utxo_2() {
let config = create_test_config_with_thread_name("test_config.toml", None).await;
let db = Database::new(config).await.unwrap();
let db = Database::new(&config).await.unwrap();

let db_utxo = db.get_funding_utxo(None).await.unwrap();

Expand All @@ -975,7 +975,7 @@ mod tests {
#[tokio::test]
async fn test_deposit_kickoff_generator_tx_0() {
let config = create_test_config_with_thread_name("test_config.toml", None).await;
let db = Database::new(config).await.unwrap();
let db = Database::new(&config).await.unwrap();

let raw_hex = "02000000000101eb87b1a80d47b7f5bd5082b77653f5ca37e566951742b80c361875ba0e5c478f0a00000000fdffffff0ca086010000000000225120b23da6d2e0390018b953f7d74e3582da4da30fd0fd157cc84a2d2753003d1ca3a086010000000000225120b23da6d2e0390018b953f7d74e3582da4da30fd0fd157cc84a2d2753003d1ca3a086010000000000225120b23da6d2e0390018b953f7d74e3582da4da30fd0fd157cc84a2d2753003d1ca3a086010000000000225120b23da6d2e0390018b953f7d74e3582da4da30fd0fd157cc84a2d2753003d1ca3a086010000000000225120b23da6d2e0390018b953f7d74e3582da4da30fd0fd157cc84a2d2753003d1ca3a086010000000000225120b23da6d2e0390018b953f7d74e3582da4da30fd0fd157cc84a2d2753003d1ca3a086010000000000225120b23da6d2e0390018b953f7d74e3582da4da30fd0fd157cc84a2d2753003d1ca3a086010000000000225120b23da6d2e0390018b953f7d74e3582da4da30fd0fd157cc84a2d2753003d1ca3a086010000000000225120b23da6d2e0390018b953f7d74e3582da4da30fd0fd157cc84a2d2753003d1ca3a086010000000000225120b23da6d2e0390018b953f7d74e3582da4da30fd0fd157cc84a2d2753003d1ca35c081777000000002251202a64b1ee3375f3bb4b367b8cb8384a47f73cf231717f827c6c6fbbf5aecf0c364a010000000000002200204ae81572f06e1b88fd5ced7a1a000945432e83e1551e6f721ee9c00b8cc33260014005a41e6f4a4bcfcc5cd3ef602687215f97c18949019a491df56af7413c5dce9292ba3966edc4564a39d9bc0d6c0faae19030f1cedf4d931a6cdc57cc5b83c8ef00000000".to_string();
let tx: bitcoin::Transaction =
Expand Down Expand Up @@ -1021,7 +1021,7 @@ mod tests {
#[tokio::test]
async fn test_deposit_kickoff_generator_tx_2() {
let config = create_test_config_with_thread_name("test_config.toml", None).await;
let db = Database::new(config).await.unwrap();
let db = Database::new(&config).await.unwrap();

let txid = Txid::from_byte_array([1u8; 32]);
let res = db.get_deposit_kickoff_generator_tx(txid).await.unwrap();
Expand All @@ -1031,7 +1031,7 @@ mod tests {
#[tokio::test]
async fn test_deposit_kickoff_generator_tx_1() {
let config = create_test_config_with_thread_name("test_config.toml", None).await;
let db = Database::new(config).await.unwrap();
let db = Database::new(&config).await.unwrap();

let raw_hex = "01000000000101308d840c736eefd114a8fad04cb0d8338b4a3034a2b517250e5498701b25eb360100000000fdffffff02401f00000000000022512024985a1ab5724a5164ae5e0026b3e7e22031e83948eedf99d438b866857946b81f7e000000000000225120f7298da2a2be5b6e02a076ff7d35a1fe6b54a2bc7938c1c86bede23cadb7d9650140ad2fdb01ec5e2772f682867c8c6f30697c63f622e338f7390d3abc6c905b9fd7e96496fdc34cb9e872387758a6a334ec1307b3505b73121e0264fe2ba546d78ad11b0d00".to_string();
let tx: bitcoin::Transaction =
Expand Down Expand Up @@ -1081,7 +1081,7 @@ mod tests {
#[tokio::test]
async fn test_deposit_kickoff_generator_tx_3() {
let config = create_test_config_with_thread_name("test_config.toml", None).await;
let db = Database::new(config).await.unwrap();
let db = Database::new(&config).await.unwrap();

let txid = Txid::from_byte_array([1u8; 32]);
let res = db.get_deposit_kickoff_generator_tx(txid).await.unwrap();
Expand Down
34 changes: 16 additions & 18 deletions core/src/database/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,7 @@ impl Database {
/// # Errors
///
/// Returns a [`BridgeError`] if database is not accessible.
///
/// TODO: Pass the reference &BridgeConfig instead of copying BridgeConfig.
pub async fn new(config: BridgeConfig) -> Result<Self, BridgeError> {
pub async fn new(config: &BridgeConfig) -> Result<Self, BridgeError> {
let url = Database::get_postgresql_database_url(&config);

match sqlx::PgPool::connect(&url).await {
Expand Down Expand Up @@ -61,7 +59,7 @@ impl Database {
/// URL contains host, port, database name, user and password fields, which
/// are picked from given configuration.
fn get_postgresql_database_url(config: &BridgeConfig) -> String {
Database::get_postgresql_url(config) + "/" + &config.db_name
Database::get_postgresql_url(&config) + "/" + &config.db_name
}

/// Initializes a new database with given configuration. If the database is
Expand All @@ -72,13 +70,13 @@ impl Database {
/// initialized database.
pub async fn initialize_database(config: &BridgeConfig) -> Result<(), BridgeError> {
// Clear artifacts.
Database::drop_database(config).await?;
Database::drop_database(&config).await?;

// Create new database with correct owner.
Database::create_database(config).await?;
Database::create_database(&config).await?;

// Run schema SQL script to initialize database.
Database::run_schema_script(config).await?;
Database::run_schema_script(&config).await?;

Ok(())
}
Expand All @@ -90,7 +88,7 @@ impl Database {
/// Will return [`BridgeError`] if there was a problem with database
/// connection. Won't return any errors if database already not exists.
async fn drop_database(config: &BridgeConfig) -> Result<(), BridgeError> {
let url = Database::get_postgresql_url(config);
let url = Database::get_postgresql_url(&config);
let conn = sqlx::PgPool::connect(url.as_str()).await?;

let query = format!("DROP DATABASE IF EXISTS {}", &config.db_name);
Expand All @@ -107,7 +105,7 @@ impl Database {
/// Will return [`BridgeError`] if there was a problem with database
/// connection.
async fn create_database(config: &BridgeConfig) -> Result<(), BridgeError> {
let url = Database::get_postgresql_url(config);
let url = Database::get_postgresql_url(&config);
let conn = sqlx::PgPool::connect(url.as_str()).await?;

sqlx::query(&format!(
Expand All @@ -128,7 +126,7 @@ impl Database {
/// Will return [`BridgeError`] if there was a problem with database
/// connection.
pub async fn run_schema_script(config: &BridgeConfig) -> Result<(), BridgeError> {
let database = Database::new(config.clone()).await?;
let database = Database::new(&config).await?;

sqlx::raw_sql(include_str!("../../../scripts/schema.sql"))
.execute(&database.connection)
Expand Down Expand Up @@ -161,7 +159,7 @@ mod tests {
async fn valid_database_connection() {
let config = create_test_config_with_thread_name("test_config.toml", None).await;

Database::new(config).await.unwrap();
Database::new(&config).await.unwrap();
}

#[tokio::test]
Expand All @@ -174,7 +172,7 @@ mod tests {
config.db_password = "nonexistingpassword".to_string();
config.db_port = 123;

Database::new(config).await.unwrap();
Database::new(&config).await.unwrap();
}

#[tokio::test]
Expand All @@ -185,16 +183,16 @@ mod tests {
// Drop database (clear previous test run artifacts) and check that
// connection can't be established.
Database::drop_database(&config).await.unwrap();
assert!(Database::new(config.clone()).await.is_err());
assert!(Database::new(&config).await.is_err());

// It should be possible to connect new database after creating it.
Database::create_database(&config).await.unwrap();
Database::new(config.clone()).await.unwrap();
Database::new(&config).await.unwrap();

// Dropping database again should result connection to not be
// established.
Database::drop_database(&config).await.unwrap();
assert!(Database::new(config.clone()).await.is_err());
assert!(Database::new(&config).await.is_err());
}

#[tokio::test]
Expand All @@ -205,16 +203,16 @@ mod tests {
// Drop database (clear previous test run artifacts) and check that
// connection can't be established.
Database::drop_database(&config).await.unwrap();
assert!(Database::new(config.clone()).await.is_err());
assert!(Database::new(&config).await.is_err());

// It should be possible to initialize and connect to the new database.
Database::initialize_database(&config).await.unwrap();
Database::new(config.clone()).await.unwrap();
Database::new(&config).await.unwrap();

// Dropping database again should result connection to not be
// established.
Database::drop_database(&config).await.unwrap();
assert!(Database::new(config.clone()).await.is_err());
assert!(Database::new(&config).await.is_err());
}

#[test]
Expand Down
2 changes: 1 addition & 1 deletion core/src/operator.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ where

let signer = Actor::new(config.secret_key, config.network);

let db = Database::new(config.clone()).await?;
let db = Database::new(&config).await?;

let nofn_xonly_pk = secp256k1::XOnlyPublicKey::from_musig2_pks(
config.verifiers_public_keys.clone(),
Expand Down
2 changes: 1 addition & 1 deletion core/src/verifier.rs
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ where
return Err(BridgeError::PublicKeyNotFound);
}

let db = Database::new(config.clone()).await?;
let db = Database::new(&config).await?;

let nofn_xonly_pk = secp256k1::XOnlyPublicKey::from_musig2_pks(
config.verifiers_public_keys.clone(),
Expand Down

0 comments on commit 7390a0a

Please sign in to comment.