summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOwen Jacobson <owen@grimoire.ca>2023-11-01 11:16:27 -0400
committerOwen Jacobson <owen@grimoire.ca>2023-11-01 11:16:27 -0400
commitfa1a5b057cdbe2394b47334864e9a4bc0e176121 (patch)
tree2f13783c9b8e09e3460a233c0272fec6a070f328
parent88983650c38758403a2025d11da112e388dccbef (diff)
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.
-rw-r--r--src/apply.rs49
1 files 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<Item = ResourceRecordSet>,
I: IntoIterator<Item = ResourceRecordSet>,
{
- 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(())