From fa1a5b057cdbe2394b47334864e9a4bc0e176121 Mon Sep 17 00:00:00 2001 From: Owen Jacobson Date: Wed, 1 Nov 2023 11:16:27 -0400 Subject: Refactor the internals of the live apply method. Using iterator combinators here feels like it's more in line with how I think about the problem. --- src/apply.rs | 49 ++++++++++++++++++++++++------------------------- 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/src/apply.rs b/src/apply.rs index 86e92b4..8a94642 100644 --- a/src/apply.rs +++ b/src/apply.rs @@ -54,33 +54,32 @@ where R: IntoIterator, I: IntoIterator, { - let mut change_batch = ChangeBatch::builder(); - for remove_record in remove_records { - let change = Change::builder() - .action(ChangeAction::Delete) - .resource_record_set(remove_record) - .build(); - change_batch = change_batch.changes(change); - } - for insert_record in insert_records { - let change = Change::builder() - .action(ChangeAction::Create) - .resource_record_set(insert_record) + let remove_records = remove_records.into_iter().map(|record| { + Change::builder() + .action(ChangeAction::Delete) // <-- + .resource_record_set(record) + .build() + }); + let insert_records = insert_records.into_iter().map(|record| { + Change::builder() + .action(ChangeAction::Create) // <-- + .resource_record_set(record) + .build() + }); + + let change_records: Vec<_> = remove_records.chain(insert_records).collect(); + if !change_records.is_empty() { + let change_batch = ChangeBatch::builder() + .set_changes(Some(change_records)) .build(); - change_batch = change_batch.changes(change); - } - let change_batch = change_batch.build(); - if let Some(changes) = change_batch.changes() { - if !changes.is_empty() { - aws_context - .route53() - .change_resource_record_sets() - .hosted_zone_id(zone_id) - .change_batch(change_batch) - .send() - .await?; - } + aws_context + .route53() + .change_resource_record_sets() + .hosted_zone_id(zone_id) + .change_batch(change_batch) + .send() + .await?; } Ok(()) -- cgit v1.2.3