diff --git a/Cargo.lock b/Cargo.lock index 398f4a9..9ab10ab 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -198,7 +198,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -209,7 +209,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -722,6 +722,31 @@ dependencies = [ "generic-array", ] +[[package]] +name = "bon" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32649b2d94d4dae1084cffd2ce1a778165e887497e4d1d55cd3976839f76194e" +dependencies = [ + "bon-macros", + "rustversion", +] + +[[package]] +name = "bon-macros" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13823053b3090fb2a35940608b0ff4c9254eb97651a971cf49fd84f8604c2591" +dependencies = [ + "darling", + "ident_case", + "prettyplease", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.87", +] + [[package]] name = "borsh" version = "1.5.1" @@ -742,7 +767,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", "syn_derive", ] @@ -822,7 +847,7 @@ checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1028,7 +1053,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1301,7 +1326,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1324,7 +1349,8 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.79", + "strsim", + "syn 2.0.87", ] [[package]] @@ -1335,7 +1361,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1503,7 +1529,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1614,7 +1640,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1866,7 +1892,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -2653,7 +2679,7 @@ checksum = "dcf09caffaac8068c346b6df2a7fc27a177fd20b39421a39ce0a211bde679a6c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -3036,7 +3062,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -3228,7 +3254,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -3781,6 +3807,16 @@ dependencies = [ "yansi", ] +[[package]] +name = "prettyplease" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" +dependencies = [ + "proc-macro2", + "syn 2.0.87", +] + [[package]] name = "proc-macro-crate" version = "3.2.0" @@ -3815,9 +3851,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" dependencies = [ "unicode-ident", ] @@ -4058,7 +4094,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76009fbe0614077fc1a2ce255e3a1881a2e3a3527097d5dc6d8212c585e7e38b" dependencies = [ "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -4087,7 +4123,7 @@ checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -4443,6 +4479,7 @@ version = "0.1.0" name = "rustic-faker-transformations" version = "0.1.0" dependencies = [ + "bon", "fake", "polars", "pretty_assertions", @@ -4498,6 +4535,7 @@ name = "rustic-result-validator" version = "0.1.0" dependencies = [ "anyhow", + "bon", "colored", "deadpool-postgres", "serde", @@ -4526,6 +4564,7 @@ name = "rustic-target-db" version = "0.1.0" dependencies = [ "anyhow", + "bon", "colored", "deadpool-postgres", "dms-cdc-operator", @@ -4538,6 +4577,7 @@ dependencies = [ name = "rustic-transformator" version = "0.1.0" dependencies = [ + "bon", "fake", "polars", "rand", @@ -4563,6 +4603,7 @@ dependencies = [ "async-trait", "aws-config", "aws-sdk-s3", + "bon", "clap", "colored", "deadpool-postgres", @@ -4843,7 +4884,7 @@ checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5218,7 +5259,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5277,9 +5318,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.79" +version = "2.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" dependencies = [ "proc-macro2", "quote", @@ -5295,7 +5336,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5463,7 +5504,7 @@ checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5547,7 +5588,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5680,7 +5721,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -5949,7 +5990,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", "wasm-bindgen-shared", ] @@ -5983,7 +6024,7 @@ checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -6407,7 +6448,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -6427,7 +6468,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 52e59af..d6fec16 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -63,6 +63,7 @@ strum = { version = "0.26", features = ["derive"] } cliclack = "0.3.2" ctrlc = "3.4" console = "0.15.8" +bon = "3.0" rustic-faker-types = { path = "rustic-faker-types" } rustic-anonymization-config = { path = "rustic-anonymization-config" } rustic-duration = { path = "rustic-duration" } @@ -101,6 +102,7 @@ rand_seeder.workspace = true futures.workspace = true dms-cdc-operator.workspace = true deadpool-postgres.workspace = true +bon.workspace = true rustic-faker-types.workspace = true rustic-anonymization-config.workspace = true rustic-duration.workspace = true diff --git a/rustic-anonymization-config/src/anonymization_config_table_impl.rs b/rustic-anonymization-config/src/anonymization_config_table_impl.rs index 3913b16..6784c8f 100644 --- a/rustic-anonymization-config/src/anonymization_config_table_impl.rs +++ b/rustic-anonymization-config/src/anonymization_config_table_impl.rs @@ -80,9 +80,11 @@ impl AnonymizationConfigTable { "fake_email_transformation" => { Box::new(FakeEmailTransformator::new(column_name, retain_if_empty)) } - "fake_multi_email_transformation" => { - Box::new(FakeMultiEmailTransformator::new(column_name)) - } + "fake_multi_email_transformation" => Box::new( + FakeMultiEmailTransformator::builder() + .column_name(column_name.to_string()) + .build(), + ), "fake_companyname_transformation" => Box::new(FakeCompanyNameTransformator::new( column_name, retain_if_empty, diff --git a/rustic-bg-whole-table-transformator b/rustic-bg-whole-table-transformator index 218acfc..d6ec317 160000 --- a/rustic-bg-whole-table-transformator +++ b/rustic-bg-whole-table-transformator @@ -1 +1 @@ -Subproject commit 218acfc9ae8a7aa77208dc8bdbe26410c1a9e878 +Subproject commit d6ec317436789f3e966a1c7aa1896b7a8d916dcb diff --git a/rustic-cdc-operator/src/cdc_operator.rs b/rustic-cdc-operator/src/cdc_operator.rs index b2862aa..40c6e42 100644 --- a/rustic-cdc-operator/src/cdc_operator.rs +++ b/rustic-cdc-operator/src/cdc_operator.rs @@ -377,7 +377,9 @@ impl CDCOperator { schema_name: &str, application_users: Vec, ) { - let target_db_finalizer = TargetDBFinalizer::new(target_pool); + let target_db_finalizer = TargetDBFinalizer::builder() + .target_db_pool(target_pool) + .build(); // Update sequence values target_db_finalizer diff --git a/rustic-config-generator-cli/rustic-config-generator-cli b/rustic-config-generator-cli/rustic-config-generator-cli index 7c3c158..50f6463 100755 Binary files a/rustic-config-generator-cli/rustic-config-generator-cli and b/rustic-config-generator-cli/rustic-config-generator-cli differ diff --git a/rustic-faker-transformations/Cargo.toml b/rustic-faker-transformations/Cargo.toml index c1f1970..1ec6acd 100644 --- a/rustic-faker-transformations/Cargo.toml +++ b/rustic-faker-transformations/Cargo.toml @@ -7,6 +7,7 @@ edition = "2021" polars.workspace = true rand.workspace = true fake.workspace = true +bon.workspace = true rustic-transformator.workspace = true rustic-faker-types.workspace = true diff --git a/rustic-faker-transformations/src/faker_transformators/fake_multi_email_transformator.rs b/rustic-faker-transformations/src/faker_transformators/fake_multi_email_transformator.rs index 056d4ff..c8afc4d 100644 --- a/rustic-faker-transformations/src/faker_transformators/fake_multi_email_transformator.rs +++ b/rustic-faker-transformations/src/faker_transformators/fake_multi_email_transformator.rs @@ -1,3 +1,4 @@ +use bon::Builder; use polars::prelude::*; use rand::rngs::StdRng; use rustic_transformator::transformator_type::TransformatorType; @@ -6,16 +7,9 @@ use fake::{faker::internet::raw::SafeEmail, locales::EN, Fake}; use rustic_transformator::transformator::Transformator; use rustic_transformator::transformator_output::TransformatorOutput; +#[derive(Builder)] pub struct FakeMultiEmailTransformator { - pub column_name: String, -} - -impl FakeMultiEmailTransformator { - pub fn new(column_name: impl Into) -> Self { - Self { - column_name: column_name.into(), - } - } + column_name: String, } impl Transformator for FakeMultiEmailTransformator { diff --git a/rustic-faker-transformations/src/faker_transformators/tests/fake_multi_email_transformator.rs b/rustic-faker-transformations/src/faker_transformators/tests/fake_multi_email_transformator.rs index a55af8a..2798c61 100644 --- a/rustic-faker-transformations/src/faker_transformators/tests/fake_multi_email_transformator.rs +++ b/rustic-faker-transformations/src/faker_transformators/tests/fake_multi_email_transformator.rs @@ -10,9 +10,9 @@ mod tests { #[test] fn test_transform() { let mut rng = StdRng::seed_from_u64(42); - let fake_multi_email_transformator = FakeMultiEmailTransformator { - column_name: "a".to_string(), - }; + let fake_multi_email_transformator = FakeMultiEmailTransformator::builder() + .column_name("a".to_string()) + .build(); let df = DataFrame::new(vec![Series::new("a", &["foo, bar, qux"])]).unwrap(); let transformed = fake_multi_email_transformator.transform(&df, &mut rng); diff --git a/rustic-local-data-importer-cli b/rustic-local-data-importer-cli index 451dc37..088d978 160000 --- a/rustic-local-data-importer-cli +++ b/rustic-local-data-importer-cli @@ -1 +1 @@ -Subproject commit 451dc375518196e60756b03427b995451543016b +Subproject commit 088d978b7551d94b2315321d3c87d762d608486a diff --git a/rustic-result-validator/Cargo.toml b/rustic-result-validator/Cargo.toml index e8bf19c..e411f23 100644 --- a/rustic-result-validator/Cargo.toml +++ b/rustic-result-validator/Cargo.toml @@ -10,3 +10,4 @@ toml.workspace = true anyhow.workspace = true colored.workspace = true deadpool-postgres.workspace = true +bon.workspace = true diff --git a/rustic-result-validator/src/config_loader/loader.rs b/rustic-result-validator/src/config_loader/loader.rs index ee740af..24ae5a5 100644 --- a/rustic-result-validator/src/config_loader/loader.rs +++ b/rustic-result-validator/src/config_loader/loader.rs @@ -1,36 +1,17 @@ +use bon::Builder; use tracing::info; use crate::config_structs::root_struct::Validations; use std::{env, fs, path::PathBuf}; /// A struct for loading validation configurations. +#[derive(Builder)] pub struct ValidationConfigLoader { - pub database_name: String, - pub schema_name: String, + database_name: String, + schema_name: String, } impl ValidationConfigLoader { - /// Creates a new `ValidationConfigLoader` instance. - /// - /// # Arguments - /// - /// * `database_name` - The name of the database. - /// * `schema_name` - The name of the schema. - /// - /// # Example - /// - /// ``` - /// use crate::config_loader::ValidationConfigLoader; - /// - /// let loader = ValidationConfigLoader::new("my_database", "my_schema"); - /// ``` - pub fn new(database_name: impl Into, schema_name: impl Into) -> Self { - Self { - database_name: database_name.into(), - schema_name: schema_name.into(), - } - } - /// Loads the validations configuration. /// /// # Returns diff --git a/rustic-result-validator/src/validator/result_validator.rs b/rustic-result-validator/src/validator/result_validator.rs index 78f9f6a..de09949 100644 --- a/rustic-result-validator/src/validator/result_validator.rs +++ b/rustic-result-validator/src/validator/result_validator.rs @@ -1,3 +1,4 @@ +use bon::Builder; use colored::Colorize; use deadpool_postgres::{GenericClient, Pool}; use tracing::info; @@ -30,53 +31,15 @@ use crate::config_structs::{root_struct::Validations, value_check_type_struct::V /// /// result_validator.validate().await; /// ``` +#[derive(Builder)] pub struct ResultValidator { - pub database_name: String, - pub schema_name: String, - pub target_db_pool: Pool, - pub validations: Validations, + database_name: String, + schema_name: String, + target_db_pool: Pool, + validations: Validations, } impl ResultValidator { - /// Creates a new `ResultValidator` instance. - /// - /// # Arguments - /// - /// * `database_name` - The name of the database to validate. - /// * `schema_name` - The name of the schema to validate. - /// * `target_db_pool` - The connection pool for the target database. - /// * `validations` - The validations to perform. - /// - /// # Example - /// - /// ``` - /// use deadpool_postgres::Pool; - /// use crate::config_structs::{root_struct::Validations, value_check_type_struct::ValueCheckType}; - /// - /// let target_db_pool: Pool = // create a connection pool for the target database - /// let validations: Validations = // define the validations to perform - /// - /// let result_validator = ResultValidator::new( - /// "database_name", - /// "schema_name", - /// target_db_pool, - /// validations, - /// ); - /// ``` - pub fn new( - database_name: impl Into, - schema_name: impl Into, - target_db_pool: Pool, - validations: Validations, - ) -> Self { - Self { - database_name: database_name.into(), - schema_name: schema_name.into(), - target_db_pool, - validations, - } - } - /// Validates the results from the database. /// /// This method performs the specified validations on the target database. diff --git a/rustic-target-db/Cargo.toml b/rustic-target-db/Cargo.toml index 5c73fd2..bfdf5fb 100644 --- a/rustic-target-db/Cargo.toml +++ b/rustic-target-db/Cargo.toml @@ -11,3 +11,4 @@ deadpool-postgres.workspace = true dms-cdc-operator.workspace = true rustic-shell.workspace = true anyhow.workspace = true +bon.workspace = true diff --git a/rustic-target-db/src/target_db_finalizer.rs b/rustic-target-db/src/target_db_finalizer.rs index 2e3b468..2620dfb 100644 --- a/rustic-target-db/src/target_db_finalizer.rs +++ b/rustic-target-db/src/target_db_finalizer.rs @@ -1,16 +1,14 @@ +use bon::Builder; use colored::Colorize; use deadpool_postgres::Pool; use tracing::info; +#[derive(Builder)] pub struct TargetDBFinalizer { pub target_db_pool: Pool, } impl TargetDBFinalizer { - pub fn new(target_db_pool: Pool) -> Self { - Self { target_db_pool } - } - /// Updates the sequence values by preparing the relevant SETVAL /// queries. /// diff --git a/rustic-target-db/src/target_db_preparator.rs b/rustic-target-db/src/target_db_preparator.rs index e429601..47c191d 100644 --- a/rustic-target-db/src/target_db_preparator.rs +++ b/rustic-target-db/src/target_db_preparator.rs @@ -1,4 +1,5 @@ use anyhow::Result; +use bon::Builder; use colored::Colorize; use deadpool_postgres::{GenericClient, Object, Pool}; use dms_cdc_operator::{ @@ -13,6 +14,7 @@ use tracing::{debug, error, info}; const RUSTIC_WITCHER_APP_NAME_PREFIX: &str = "rustic_witcher"; const PG_DUMP_FILE_NAME: &str = "pg_dump.sql"; +#[derive(Builder)] pub struct TargetDbPreparator { pub source_db_pool: Pool, pub target_db_pool: Pool, @@ -154,10 +156,10 @@ impl TargetDbPreparator { // If the role should not be created as a superuser, grant the target superuser to the data import user // Required for supporting Postgres 16+ - let postgres_version = get_target_postgres_version(&client).await.unwrap(); + let postgres_version = Self::get_target_postgres_version(&client).await.unwrap(); // Get extra commands based on the Postgres version - let version_based_extra_commands = version_based_extra_commands( + let version_based_extra_commands = Self::version_based_extra_commands( postgres_version, target_username.to_string(), superuser_username, @@ -197,36 +199,36 @@ impl TargetDbPreparator { client.execute(&sequence_fix, &[]).await.unwrap(); } } -} -async fn get_target_postgres_version(client: &Object) -> Result { - // Execute the SQL query to get the PostgreSQL version - let row = client - .query_one( - "SELECT setting FROM pg_settings WHERE name = 'server_version'", - &[], - ) - .await?; + async fn get_target_postgres_version(client: &Object) -> Result { + // Execute the SQL query to get the PostgreSQL version + let row = client + .query_one( + "SELECT setting FROM pg_settings WHERE name = 'server_version'", + &[], + ) + .await?; - // Extract the version from the row - let version: String = row.get(0); + // Extract the version from the row + let version: String = row.get(0); - info!("PostgreSQL Version: {}", version); + info!("PostgreSQL Version: {}", version); - let version_parts: Vec<&str> = version.split('.').collect(); - let major_version: i32 = version_parts[0].parse().unwrap(); + let version_parts: Vec<&str> = version.split('.').collect(); + let major_version: i32 = version_parts[0].parse().unwrap(); - Ok(major_version) -} + Ok(major_version) + } -fn version_based_extra_commands( - version: i32, - target_username: String, - superuser_username: String, -) -> Vec { - match version { - v if v >= 16 => vec![format!("GRANT {target_username} TO {superuser_username}")], - _ => vec![], + fn version_based_extra_commands( + version: i32, + target_username: String, + superuser_username: String, + ) -> Vec { + match version { + v if v >= 16 => vec![format!("GRANT {target_username} TO {superuser_username}")], + _ => vec![], + } } } diff --git a/rustic-transformator/Cargo.toml b/rustic-transformator/Cargo.toml index 35258b0..4cd837b 100644 --- a/rustic-transformator/Cargo.toml +++ b/rustic-transformator/Cargo.toml @@ -9,5 +9,6 @@ tracing.workspace = true fake.workspace = true rand.workspace = true rand_seeder.workspace = true +bon.workspace = true rustic-faker-types.workspace = true rustic-duration.workspace = true diff --git a/rustic-transformator/src/transformator_output.rs b/rustic-transformator/src/transformator_output.rs index fbeb274..bfbf9c5 100644 --- a/rustic-transformator/src/transformator_output.rs +++ b/rustic-transformator/src/transformator_output.rs @@ -1,5 +1,7 @@ +use bon::Builder; use polars::prelude::*; +#[derive(Builder)] pub struct TransformatorOutput { pub column_name: String, pub series: Series, diff --git a/src/execution_payload.rs b/src/execution_payload.rs index fe75809..cea28df 100644 --- a/src/execution_payload.rs +++ b/src/execution_payload.rs @@ -1,17 +1,14 @@ +use bon::Builder; + /// Helper struct for usage with any payload that will not /// be relevant to the DMS CDC Operator and will only be needed /// in our domain. +#[derive(Builder)] pub struct ExecutionPayload { target_application_users: Vec, } impl ExecutionPayload { - pub fn new(target_application_users: Vec) -> Self { - Self { - target_application_users, - } - } - pub fn target_application_users(&self) -> Vec { self.target_application_users.clone() } diff --git a/src/main.rs b/src/main.rs index cf51db4..437f9fd 100644 --- a/src/main.rs +++ b/src/main.rs @@ -121,7 +121,9 @@ async fn main() -> Result<()> { info!("Record reduction is: {record_reduction_enabled}"); - let execution_payload = ExecutionPayload::new(target_application_users); + let execution_payload = ExecutionPayload::builder() + .target_application_users(target_application_users) + .build(); // Build SOURCE_POSTGRES_URL let source_postgres_url = format!( @@ -235,19 +237,19 @@ async fn main() -> Result<()> { .await; // Read the validations configs - let validation_config_loader = ValidationConfigLoader::new( - cdc_operator_payload.database_name(), - cdc_operator_payload.schema_name(), - ); + let validation_config_loader = ValidationConfigLoader::builder() + .database_name(cdc_operator_payload.database_name()) + .schema_name(cdc_operator_payload.schema_name().to_string()) + .build(); let validation_configs = validation_config_loader.load_validations_config(); // Execute the validations - let result_validator = ResultValidator::new( - cdc_operator_payload.database_name(), - cdc_operator_payload.schema_name(), - target_pool, - validation_configs, - ); + let result_validator = ResultValidator::builder() + .database_name(cdc_operator_payload.database_name()) + .schema_name(cdc_operator_payload.schema_name().to_string()) + .target_db_pool(target_pool) + .validations(validation_configs) + .build(); _ = result_validator.validate().await; // Close the connection pool